ファイル名にハイフンが含まれているディレクトリのファイルを削除する

ファイル名にハイフンが含まれているディレクトリのファイルを削除する

私のmacOSシステムには7,000を超える画像を含むフォルダがあり、ファイル名にハイフンを含む画像を削除する必要があります。ディレクトリを入力した後、次のコマンドを試しましたが、cd応答がありません(ターミナルを初めて使用する場合)。

rm -rf -- -
$ rm ./-
find . -type f -regex '/-/' -exec rm {} \;
find . -name '-*' | xargs rm
find . -regex '/-/' -print0 | xargs -0 rm

答え1

このパターンは、*-*現在のディレクトリのすべての名前と一致します。ダッシュを含む-(文字通り「他の文字列にプレフィックスおよび/またはサフィックスが付くことができる1つ以上の名前を含む」)。これはあなたができることを意味します

rm ./*-*

または

rm -- *-*

-現在のディレクトリから名前に文字を含むすべてのファイルを削除します。

zshシェルで*-*(.)asモードを使用すると、一致は通常のファイルにのみ制限されます(ディレクトリではありませんが、ディレクトリはrm削除できません)。

rm一度に処理するにはファイルが多すぎる場合は、find次のように使用してください。

find . -maxdepth 1 -type f -name '*-*' -delete

-maxdepth 1検索を現在のディレクトリに制限し、通常のファイルのみを削除するように追加しました-type f

(やや遅い)ループを使用することもできます。

for name in ./*-*; do
    rm "$name"
done

一部の人は「一行」を好み、このループは次のように書くことができます。

for name in ./*-*; do rm "$name"; done

...ほとんどの最新のシェルでは、複数行コマンドで入力することは間違いなく可能です。

関連情報