lib
最後に、ディレクトリ内のすべてのファイルを削除したいと思います。.swp
次のことなくどのようにこれを行うことができますかfind
?
rm `find lib/ -name *.swp`
答え1
照会の良い点は再帰的であるということです。一部の最新のシェルは検索再帰を提供しますが、POSIXと互換性がないため、どこでも動作することに頼ることはできません。以下は、bash 4.0以降で実行される例です。
shopt -s globstar
for f in **/*.swp; do
rm -- "$f"
done
すでに持っている find コマンドの場合、スペースを含むすべてのファイル (スペースなど) が削除されます。以下は固定例です。
find lib/ -name '*.swp' -exec rm {} +
一部のバージョンでは、次のものをfind
使用できます-delete
。
find lib/ -name '*.swp' -delete
答え2
cd lib && ls -R | grep '\.swp$' | xargs -d '\n' rm
ソースの場合は、次のようにします。
find lib -name '*.swp' | xargs -d '\n' rm
find
結果が返されない場合、エラーは発生しないためです。
呼び出されるディレクトリは削除できないため、返さない場合は\! -type d
soを使用できます。ディレクトリが後ろにあるため、正規表現と一致しないため、私の選択肢と同様の操作を実行できます。find
*.swp
rm
ls -RF
/