web-dev-qa-db-ja.com

上書きせずに出力を使用してファイルを検索および移動します

いくつかのファイルを見つけて/ home/user/fol1から/ home/user/fol2に移動しようとしています。

一般的に私は使用します

find . -type f -name "abc*" -exec mv -t "/path/to/foo/bar" {} +

ただし、これにより、/ path/to/foo/barにすでに存在する同じ名前のファイルが上書きされます。
すでに存在する場合はファイルをスキップしたい。

これにループが必要な場合は、シェルでのプレーン出力またはログファイルでの出力も必要です。

何か案は?

1
Umer

nオプションを使用できます。

find . -type f -name "abc*" -exec mv -nt "/path/to/foo/bar" "{}" +

man mvから:

-n, --no-clobber
          do not overwrite an existing file
3
Prvt_Yadav