一部のファイルに対して検索とコピーを使用しようとしていますが、問題はfindコマンドを実行してwcを確認すると、一部の結果が表示され、このファイルを別のディレクトリにコピーした後に別の結果(ファイル数)が表示されることです。
ここで問題を明確に理解できます。
[root@localhost student]# find /tmp/files/test/ -type f -size -1000c | wc
664 664 19863
サイズ基準に一致する664個のファイルが表示されることがわかります。これでディレクトリにコピーします。
[root@localhost student]# find /tmp/files/test/ -type f -size -1000c -exec cp {} /tmp/files/pictures/ \;
コピーしたら、ファイルの数を確認してください。
[root@localhost student]# ls -l /tmp/files/pictures/ | wc
657 5906 36049
このファイルには657個のファイルしかありません。なぜですか?
コピーされていない2つのファイルをどのように比較しますか?
そしてfindのマニュアルページには詳細なオプションはありません。
答え1
ファイル名が重複する可能性がありますか?その場合、既存のファイルを上書きし、最終的にターゲットに到達するファイルの総数を減らします。
これを試してみて、これが何をしているのかを確認できます。見つかったファイルの一意のデフォルト名の数を数えるだけです。
find /tmp/files/test/ -type f -size -1000c -print0 | xargs -n1 -0 basename | sort | uniq | wc -l