2017-01-30 12 views
0

.txt.exe拡張子を持たないすべてのファイルを現在の作業ディレクトリに再帰的に削除するにはどうすればよいですか?私は1つのライナーが必要です。特定の拡張子を持たないファイルを削除するには?

私が試した:

find . ! -name "*.txt" "*.exe" -exec rm -r {} \ 
find -type f -regextype posix-extended -iregex '.*\.(txt|exe)$' 
+1

これはあなたを助けることができると思います: http://unix.stackexchange.com/questions/153862/remove-all-files-directories-except-for-one-file –

+0

あなたの1つのライナーコマンドが有効ですか? – sureshkumar

+0

彼らは動作しませんでした。リンクも役に立たなかった。 –

答えて

1

はこれを試してみてください。

find . -type f ! -name "*.exe" ! -name "*.txt" -exec rm {} \; 

上記のコマンドは、再帰的に、現在のディレクトリおよびサブディレクトリ内のすべての.exe以外のファイルや.txt拡張子のファイルを削除します。

+0

ありがとう、それは働いた。 –

1

あなたは-deleteアクションでGNU見つけた場合は:チェーンの引数で一度だけrmを実行するために-exec ... {} +を使用して

find . -type f ! \(-name '*.txt' -o -name '*.exe' \) -exec rm -f {} + 

find . -type f ! \(-name '*.txt' -o -name '*.exe' \) -delete 

そうでない場合。

関連する問題