質問: unixコマンドラインを介したファイルのグループからの小さなファイルのバッチ削除 写真でいっぱいのディレクトリがたくさん(400以上)あります。私がやりたいのは、これらの写真のサイズを大きくしておくことです。各ディレクトリには、31〜66個のファイルがあります。各ディレクトリには、サムネイル、より大きなバージョン、およびexample.jpgというファイルがあります。example.jpgファイルを簡単にディスパッチしました:rm */example.jpg 当初はサムネイルを削除するのは簡単だと思っていましたが、名前が一貫していないのが問題です。典型的なパターンはphoto1.jpgとphoto1s.jpgでした。 rm */photo*s.jpgを実行しましたが、photoxs.jpgという名前のファイルのいくつかは実際には大きく、小さくはありませんでした。ああ。だから私がしたいのは、ファイルサイズについて各ディレクトリをスキャンし、サムネイルを削除(または移動)することです。私は当初、すべてのファイルをls -rし、各ファイルのサイズを抽出して、しきい値未満で保存すると思っていました。問題? 1つのディレクトリでは、ラージは1.1 mbで、サムは200kです。別のものでは、大きいものは200kで、小さいものは30kです。さらに悪いことに、ファイルの名前は実際にはほとんどphoto1.jpgです。したがって、ファイルをすべて同じフォルダーに入れ、サイズで並べ替え、グループで削除するだけでは、名前を変更しないと機能しません。可能であれば、保持したいと思います。それらのフォルダにあります。私はこれをすべて手動で行うことにほぼ決心しましたが、それから私はここで尋ねると思いました。このタスクをどのように行いますか?
回答: ファイル名に基づいてこれを実行する場合は、次のことを試してください。find -name '*.jpg' | sed -ne 's:^\(.*\)\.jpg:\1s.jpg$:p' | xargs rm すべての.jpgファイルを検索し、ファイル名の最後(「。」の直前)に「s」を付けて削除します。