いくつかのdirをある場所から別の場所に移動しようとしていますが、1つをそのままにしておく必要があります(すべてのファイルはそのまま残ります)。私はいくつかのことを試しましたが、何もうまくいかないようです。DIR_COUNTの値をテストしましたが、期待どおりに機能します。ただし、条件ステートメントまたはcaseステートメントで使用すると、期待どおりに機能しません。
条件付き
#!/bin/bash
DIR_COUNT=$(find path/to/dir/*[^this_dir_stays_put] -type d -maxdepth 0 | wc -l)
echo $DIR_COUNT
if [[ $DIR_COUNT > 0 ]]
then
find path/to/dir/*[^this_dir_stays_put] -type d -maxdepth 0 -exec mv {} new/location \;
echo "Moving dirs."
else
echo "No dirs to move."
fi
場合
#!/bin/bash
DIR_COUNT=$(find path/to/dir/*[^this_dir_stays_put] -type d -maxdepth 0 | wc -l)
echo $DIR_COUNT
case $DIR_COUNT in
0)
echo "No dirs to move."
*)
echo "Moving dirs."
find path/to/dir/*[^this_dir_stays_put] -type d -maxdepth 0 -exec mv {} new/location \;;;
esac
どちらのバージョンのコードでも、移動するディレクトリが存在すればすべて問題ありませんが、移動するディレクトリがない場合は問題が発生します。
条件付き
$ sh script.sh
find: find path/to/dir/*[^this_dir_stays_put]: No such file or directory
0
No dirs to move.
場合
$ sh script.sh
find: find path/to/dir/*[^this_dir_stays_put]: No such file or directory
0
Moving dirs.
find: find path/to/dir/*[^this_dir_stays_put]: No such file or directory