この検索コマンドを実行すると、次のようになります。
find /html/car_images/inventory/ -type f -iname \*.jpg -mtime -4
私は次のような結果を得ます。
/html/car_images/inventory/16031/16031_06.jpg
/html/car_images/inventory/16117/16117_01.jpg
/html/car_images/inventory/16126/16126_01.jpg
/html/car_images/inventory/16115/16115_01.jpg
/html/car_images/inventory/16128/16128_02.jpg
/html/car_images/inventory/16128/16128_03.jpg
/html/car_images/inventory/16128/16128_04.jpg
私の目標は、各ディレクトリの「Thumbnails」フォルダを削除することです(例:このフォルダを削除する: /html/car_images/inventory/16128/thumbnails/ 削除もして/html/car_images/inventory/16115/thumbnail/
上記のfindコマンドから出力の各行を取得し、*.jpg”を“thumbnail”に変更してプレフィックス“rm -fr”を追加すると、次のような結果が得られます。
rm -fr /var/www/html/car_images/inventory/16115/thumbnails/
rm -fr /var/www/html/car_images/inventory/16128/thumbnails/
など...
これを行う方法についてのアイデアはありますか? (おそらくfindとsedを使用するか、cutの-execオプションを使用できますか?)
(私の目標全体を表現するもう1つの方法は、X日よりも「若い」.jpgファイルを含むフォルダの「サムネイル」フォルダを削除することです。)
ベストアンサー1
ファイル名に改行文字がないとします。
find /html/car_images/inventory/ -type f -iname \*.jpg -mtime -4 \
-exec sh -c 'echo "${1%/*}"' _ {} \; | sort -u | \
xargs -d $'\n' -I{} rm -r {}/thumbnails
パラメータ拡張、
${1%/*}
見つかった各エントリからファイル名のない部分を抽出するsort -u
重複するアイテムがないようにアイテムを並べ替えてから一意にします。xargs -I{} rm -r {}/thumbnails
thumbnails
最後に追加し、結果ディレクトリを削除します。