何百ものファイルを含む多くのディレクトリがあります。
各ディレクトリには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//€/}'\')