
私はbashシェルを使用しています。特定のディレクトリ内のすべてのJARファイルを削除するコマンドがあります
find ~/.jenkins/jobs/subco/ -name '*.jar' -print0 | xargs -0 -r rm
しかし、「~/.jenkins/jobs/subco/myapp」にあるJARファイルを除くすべてのJARファイルを削除するように上記の内容を修正したいと思います。 JARファイルがその特定のディレクトリから削除されることを除いて、他のすべてのディレクトリから削除されるように上記のコマンドをどのように変更できますか?
答え1
-prune
オプションを使用してディレクトリをスキップします。
find ~/.jenkins/jobs/subco -path ~/.jenkins/jobs/subco/myapp -prune -o -name '*.jar' -exec rm -r {} +
答え2
努力する:
(
cd ~/.jenkins/jobs/subco
find . -path ./myapp -prune -o -type f -name '*.jar' -print0 | ...
)
-type f
JARファイルのみを一致させたい場合は、制限に追加してください。そして、あなたはそれを使用し、それをサポートする-print0
可能性があるので、次のものを使用できます。find
-delete
(
cd ~/.jenkins/jobs/subco
find . -path ./myapp -prune -o -type f -name '*.jar' -delete
)
POSIX的に:
(
cd ~/.jenkins/jobs/subco
find . -path ./myapp -prune -o -type f -name '*.jar' -exec rm -f {} +
)
GNU findを使用すると-execdir
使用を避けることができます-exec
競争条件、一部もご覧くださいGNU Find マニュアルのセキュリティに関する考慮事項。
-delete
可能であれば常に使用してください。