あるディレクトリ内のファイルを検索し、別のディレクトリ内のファイルを検索しない Unix コマンドはありますか?

あるディレクトリ内のファイルを検索し、別のディレクトリ内のファイルを検索しない Unix コマンドはありますか?

別のディレクトリではなく、直接 1 つのディレクトリにあるファイルを検索する Unix コマンドは何ですか? ファイル名だけが重要です。

ありがとう。

答え1

この検索を上位のディレクトリから実行したいと想定しています。その場合は、-pathのオプションを使用できますfind

例えば、以下のディレクトリ構造の場合

+---dir1/test1.txt
  |
  |--dir2/test1.txt

dir1で'test*'に一致するファイルを検索するには、

find -path '*dir1*' -iname 'test*'

答え2

2 つのディレクトリを比較するには、次のようにします。

diff <(cd "$dir1"; find | sort) <(cd "$dir2"; find | sort)

これを 1 つの方法のみで実行し、ファイルのリストを生成するには、次を試してください。

diff <(cd "$dir1"; find | sort) <(cd "$dir2"; find | sort) \
| grep '< ./' | sed "s,< ./,$dir1/,"

これが適切に機能するには、$dir1 と $dir2 のどちらにも末尾のスラッシュを含めないでください。

関連情報