私の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
...ほとんどの最新のシェルでは、複数行コマンドで入力することは間違いなく可能です。