ディレクトリからすべてのファイル形式を削除しても機能しません。

ディレクトリからすべてのファイル形式を削除しても機能しません。

私のディレクトリは次のとおりです。

音楽:1.mp3、2.flac、3.wav、4.ogg、5.mp4

次のコマンドを使用して、拡張子が.mp3、.wav、.flac、および.oggのすべてのファイルを削除しようとしました。

find ./Music -type f -name \('*.mp3' -or -name '*.wav' -or -name '*.flac' -or -name '*.ogg'\) -delete

しかし、ディレクトリには何もしません。

理由をご存知ですか?

(しかし私は音楽カタログより1レベル上です)

ベストアンサー1

構文が正しくありません。-name次のように、すべてのオプションが同じ括弧内にあり、括弧の周りにスペースが必要です。

find ./Music -type f  \( -name '*.mp3' -or -name '*.wav' -or -name '*.flac' -or -name '*.ogg' \) -delete

元のコマンドが使用中です。これは、または、または-name \('*.mp3' -or -name '*.wav' -or -name '*.flac' -or -name '*.ogg'\)というファイルを探していることを意味します。オプションなしでコマンドを実行すると、これを確認できます。\(*.mp3'*.wav''*.flac''*.ogg'\)-delete

$ find ./Music -type f -name \('*.mp3' -or -name '*.wav' -or -name '*.flac' -or -name '*.ogg'\) 
./Music/3.wav
./Music/2.flac

\('*.mp3'一致が見つからないか一致しないため、*.ogg\)ファイルが見つかりません。コマンドは括弧内にグループ化されていないので(これを行うには括弧の周りにスペースが必要です)、意図したとおりに適用されません(申し訳ありませんが、解析-delete方法がわかりません)。find

おすすめ記事