~とpycで終わるファイルを見つける方法は? [コピー]

~とpycで終わるファイルを見つける方法は? [コピー]

「〜」または「pyc」で終わるすべてのファイル(現在のディレクトリとすべてのサブディレクトリから)を見つけたいです。これを行うには、次のfindパターンを試しました。

find . -name '*{~,pyc}'
find . -name '{*~,*.pyc}'

ただし、どちらもディレクトリ内のファイルを一覧表示しません。なぜこのモードが機能しないのですか?正しいことは何ですか?

ls代わりに(引用符なしで)使用すると、find予想される結果が得られます。ls現在のすべてのサブディレクトリの代わりにディレクトリ)。

答え1

find . -type f \( -name "*~" -o -name "*pyc" \)

-type fこれにより、()または()で終わるすべてのファイルが返されます。~-opyc

答え2

GNU findがある場合は、正規表現を使用する方がはるかに簡単です。

find . -regextype posix-egrep -regex '.*(~|pyc)$'

PS:シェル拡張と検索を使用していると思いますか?その場合は、可能でない場合は代わりに使用してくださいfind . -name '*.pyc' -o -name '*~'

答え3

圧縮したい場合は、以下を使用してくださいzsh

printf '%s\n' **/*(~|pyc)(.D)

Dドットファイルでも動作し、.通常のファイルでのみ動作します)

シェル支柱拡張を使用するには、次の手順を実行する必要があります。

eval 'find . -type f ! \(' '! -name \*'{~,pyc} '\)'

シェルは次のように展開されます。

eval 'find . -type f ! \(' '! -name \*~' '! -name \*pyc' '\)'

その後、シェルは次のコマンドラインを評価するように求められます。

find . -type f ! \( ! -name \*~ ! -name \*pyc \)

関連情報