タイトルにxを含むすべてのファイルを削除するにはどうすればよいですか?

タイトルにxを含むすべてのファイルを削除するにはどうすればよいですか?

何百ものファイルを含む多くのディレクトリがあります。

各ディレクトリにはmy_file-01.jpgとmy_file-€01.jpgのペアがあります。

タイトルに€記号を含むすべてのファイルを削除したいです。どうすればいいですか?

答え1

find実行した作業:

find . -iname "*€*" -delete名前が一致するすべてのファイルを削除してください。」EUR注意してください。findはサブディレクトリにも移動します。それを望まない場合は、findパラメータを少し調整する必要があります。

答え2

似たようなもの

find -name '*€*' -delete

正しいファイルが削除されていることを確認するために、まずこれを試してみてください。

find -name '*€*' -ls

答え3

各例では、最初のコマンドは名前にaを含むファイルを一覧表示し、2番目のコマンドはそのファイルを削除します。

GNU findの使用(Linux上):

find -name '*€*' -ls
find -name '*€*' -delete

ディレクトリではなく通常のファイルのみを一致させるには、-type f後で追加します。-name '*€*'

POSIX 機能のみに依存して find を使用してください。

find . -name '*€*' -print
find . -name '*€*' -exec rm {} +

ディレクトリではなく通常のファイルのみを一致させるには、-type f後で追加します。-name '*€*'

bash 4またはzshの使用:

echo **/*€*
rm **/*€*

zsh からの**/*€*(.)みディレクトリを除いて、通常のファイルに一致を制限します。


名前に含まれるファイルのみをリストし、同じファイルが存在しない場合は、標準のfindおよびzshソリューションがあります。

find . -name '*€*' -type f -exec sh -c 'cmp -s -- "$0" "$(printf "%s" "$0" | tr -d "€")"' {} \; -print
find . -name '*€*' -type f -exec bash -c 'cmp -s -- "$0" "${0//€/}")"' {} \; -print
echo **/*€*(.e\''cmp -s -- $REPLY ${REPLY//€/}'\')

関連情報