Unixでfindを使用して奇妙なファイル/ディレクトリ名を見つける

Unixでfindを使用して奇妙なファイル/ディレクトリ名を見つける

私はfindを使ってディレクトリパスを入力するスクリプトを書いています。これはスクリプトの一部です。

set list = (`find $PATH -type d`)

ファイルまたはディレクトリ名の名前が指定されないまでは正常に動作します。たとえば、次のようになります。

fi@@lename&& or −filename or :−,?!drectoryanem!-

これらの特殊文字を処理できないため、検索スクリプトを次のように変更しました。

set list = ("`find $PATH -type d`")

ただし、次のスクリプトでリストのパスを使用したい場合は、どちらも機能しません。

foreach i ($list:q)
   foreach file (`find "$i" -maxdepth 1 -type f`)
   ....
   end
end

これらの特殊ファイル名を処理できないため、findなどのエラーがたくさん発生します。

−."!filenda no such filename or directory

ベストアンサー1

珍しいファイル名を管理するには、引用符( ")を囲む必要がありますが、find最も効率的な方法では使用findされていないようです。 。

    find . -maxdepth 1 -type f -exec ls -l {} \;

-exec以降のすべては、見つかった各ファイルで実行され、{}ファイル名に置き換えられます。

また、FreeBSD 3.2では、いくつかの奇妙なことがあります。 FreeBSD 3.2は1999年5月にリリースされました。

おすすめ記事