2016-08-07 4 views
1

が、それは動作しますが、私がこれまで持っているものである特定の種類のファイルが含まれていないすべてのディレクトリを削除しますが、それはエラーをスローし、私はなぜ正確にわからない:見つけ、ここで

$ find . -mindepth 1 -type d '!' -exec sh -c 'ls -1 "{}" | egrep -i -q "\.(mp4|avi|mkv)"' \; -print -exec rm -r {} \; 
./test 
find: `./test': No such file or directory 
+3

私はあなたが自動ファイル削除機能を使って作業するときは非常に慎重であることをお勧めします。最初に、ファイル名を印刷してから、十分にテストしたらrmコマンドを追加します。 – technico

+1

完全なパイプラインが '{}'の値に対して '-exec'dされることを期待していますか?私はそれが正しいとは思わない。私はそのコードをすべてシェルスクリプトに入れ、 'find ... | xargs ./myShellscript.sh 'を実行します。そして、テストの前に、テストし、テストしてください! 'rm' cmdsをエコーし​​て、一度パイプを見ると\' | bash'。がんばろう。 – shellter

答えて

0

このコマンドを試してみてください find . -mindepth 1 -type f | egrep -v "\.(mp4|avi|mkv)$" | xargs rm -i

0

これは私が使用して終了するものである:

find . -mindepth 1 -type d '!' -exec sh -c 'ls -1 "{}" | egrep -i -q "\.(mp4|avi|mkv)"' \; -print | while read line;do rm -r $line;done 

私はディレクトリが正規表現exisに一致しない場合でもエラーになりませんでした1つのライナーを持っていると思いましたテッド。

関連する問題