Linux 上でサブフォルダーの名前に基づいて一連のフォルダーを削除する必要があります。
/tmp/23245/Default
/tmp/34534/Default
/tmp/45435/Default
/tmp/65464/Main
/Default のサブフォルダを含む /tmp のすべてのフォルダを削除したい
これらのフォルダ
/tmp/23245/
/tmp/34534/
/tmp/45435/
次のコマンドでファイルを見つけることができます: find /tmp/*/Default
しかし、その出力から、フォルダ名/tmp/Foldernameを取得してrm -rfにパイプするにはどうすればよいでしょうか。
答え1
find を使用して次の操作を試すことができます。
find /tmp -mindepth 2 -maxdepth 2 -name "*Default*" -type d -printf "%h\n" | xargs rm -R
mindepth と maxdepth を使用して、/tmp から 2 レベル下のディレクトリを分析していることを確認し、%h を使用して先頭のディレクトリのみを出力します。出力を xargs rm -R にパイプして、先頭のディレクトリを削除します。
答え2
dirname
GNU coreutils には次のものがあります:
for i in /tmp/*/Default; do
rm -R "$(dirname "$i")";
done
おそらく、別のアプローチもあるでしょうfind
。私はその方法に詳しくないので、あなたや他の人に任せます。
編集: おそらくうまくrm -R "$(dirname /tmp/*/Default)"
いくだろう
答え3
rm -d dirname
を試しましたか*
?
rm -d /tmp/*/Default
このサイトからちょっと離れます:https://linuxize.com/post/rm-command-in-linux/