フォルダツリーから一時ファイルの束を消去しようとしていますが、特定の基準に一致するファイル、特に実行可能ファイル、.tplファイルは削除し、サブフォルダ「data」は削除したくありません。
ここでこの質問を見ました。
Mac端末を使用して、正規表現に一致するディレクトリのファイルを削除します。
私が探しているものとほぼ一致しますが、一致させたい正規表現があり、一致したくない正規表現があります。削除されていないすべてのファイルを検索するには:
find . -executable -o -regex '.*\.tpl'
正規表現で-vのように一致を反転させる方法はありますか?
答え1
正規表現で-vのように一致を反転させる方法はありますか?
使用否定的な( !
):
find . -executable -o ! -regex '.*\.tpl' -exec rm -i {} \+
答え2
特定の基準に一致するファイルを除くすべての項目に対してコマンドを実行する便利な方法は、「何もしない場合は実行」を意味する段落の動作を-o
利用することです。find -cond1 -cond2 -o -exec command
cond1
cond2
command
find . -type f -executable -o -name '*.tpl' -o -exec rm -i {} \+
ディレクトリを除外するには、「ディレクトリをスキップしてそのディレクトリに戻らない」という意味の操作をdata
使用してください。名前付きのすべてのディレクトリを一致させるため、または最上位レベルでのみ一致する-prune
ために使用されます。-name data
data
-path ./data
find . -type f -executable -o \
-name '*.tpl' -o \
-type d -name data -prune -o \
-exec rm -i {} \+
ボーナス:zshでも同じです。
rm -i -- **/*~*.tpl~data/*(.^*)