私の間違ったコマンド:
find . -type f -name '*2019*' -exec mv {} ./backup_2019 \;
結果:
mv: ‘./backup_2019/2019-A.txt’ and ‘backup_2019/2019-A.txt’ are the same file
mv: ‘./backup_2019/2019-B.txt’ and ‘backup_2019/2019-B.txt’ are the same file
mv: ‘./backup_2019/2019-C.txt’ and ‘backup_2019/2019-C.txt’ are the same file
以前に移動したファイルを見つけたと思います。 MaxDeepthを使用せずにこの問題を解決できますか?ターゲットディレクトリのみを除外する方法はありますか?
ベストアンサー1
除外するターゲットディレクトリを無視する必要があります。
find . -path './backup_2019' -prune -o -type f -name '*2019*' -exec mv {} ./backup_2019 \;
演算子間の暗黙的なANDは-o
OR()よりも密接に関連付けられているため、次のように変換されます。(パスが一致する場合はスキップ./backup_2019
)または(mv
一致するファイルがある場合*2019*
)。