![~とpycで終わるファイルを見つける方法は? [コピー]](https://linux33.com/image/30676/~%E3%81%A8pyc%E3%81%A7%E7%B5%82%E3%82%8F%E3%82%8B%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E8%A6%8B%E3%81%A4%E3%81%91%E3%82%8B%E6%96%B9%E6%B3%95%E3%81%AF%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
「〜」または「pyc」で終わるすべてのファイル(現在のディレクトリとすべてのサブディレクトリから)を見つけたいです。これを行うには、次のfind
パターンを試しました。
find . -name '*{~,pyc}'
find . -name '{*~,*.pyc}'
ただし、どちらもディレクトリ内のファイルを一覧表示しません。なぜこのモードが機能しないのですか?正しいことは何ですか?
ls
代わりに(引用符なしで)使用すると、find
予想される結果が得られます。ls
現在のすべてのサブディレクトリの代わりにディレクトリ)。
答え1
find . -type f \( -name "*~" -o -name "*pyc" \)
-type f
これにより、()または()で終わるすべてのファイルが返されます。~
-o
pyc
答え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 \)