findと同じシェルスクリプトでwhileが機能しないのはなぜですか? [閉鎖]

findと同じシェルスクリプトでwhileが機能しないのはなぜですか? [閉鎖]

10 KB を超えるすべてのファイルを検索し、別のディレクトリに移動する必要がある次のコードがあります。

read mam
find "$mam" -type f -size +10k > size.txt
while read line
do
    mv "$line" /home/patakinorbert/Desktop/prk1
done < size.txt

ベストアンサー1

シェルスクリプトは必要ありません。単一のfindコマンドでファイルを検索して移動します。

read -r mam
find "$mam" -type f -size +10k -exec mv {} /home/patakinorbert/Desktop/prk1 \;

-execとの間の単語は、\;見つかった各ファイルに対して実行されるコマンドであり、{}見つかったファイルの名前に置き換えられます。

UbuntuなどのLinuxシステムまたはGNUツールを使用するすべてのシステムで、このコマンドのより効率的なバージョンは次のとおりです。

read -r mam
find "$mam" -type f -size +10k -exec mv -t /home/patakinorbert/Desktop/prk1 +

これは、1回の呼び出しで複数のファイルを移動するため、より効率的ですmv

おすすめ記事