find を使って ls -F のようにソートできますか? (後にスラッシュがあるディレクトリ)

find を使って ls -F のようにソートできますか? (後にスラッシュがあるディレクトリ)

私はfindファイルのリストを取得し、パスの一致にgrepを使用しました。

$ find pc* | grep -i arthur
pc6/arthurv/untitled-2.py
pc6/arthurv/untitled-3.py
pc6/arthur.py
pc9/Arthur 4C
pc9/Arthur 4C/untitled-1.py
pc9/Arthur 4C/untitled-2.py

私はこれを行い、ls -F各ディレクトリに1つずつ追加したいと思います。/

または、一致するすべての大文字と小文字を区別せずに表示するディレクトリを見つける方法はarthur

ベストアンサー1

findGNUで条件付き処理を実装するには、式に論理和を使用できますfind

find pc* -type d -printf "%p/\n" -o -print

「pc *」に一致するファイルとディレクトリで始まるパスですべてのエントリを見つけてその名前を印刷し、ディレクトリの場合は「/」と表示されます。

仕組みは次のとおりです。

  • pc*開始パスを指定します。
  • -type d一致ディレクトリ
  • -printf "%p/\n"現在処理されているファイルのパスを印刷し、その後に「/」と改行文字が続くので、一致する-type d場合にのみ実行されます-type d(暗黙的な接続詞があります)。
  • -o論理和の紹介:前の表現が一致しない場合は、その後の表現が評価されます(-type d -printf "%p/\n"接続が論理和より優先順位が高いため、前の表現がここにあります)。
  • -print現在処理中のファイルのパスを出力します。

追加のfind式を使用して、大文字と小文字を区別しない「arthur」に一致するすべてのディレクトリを表示できます。

find . -type d -iname "*arthur*"

おすすめ記事