指定された 2 つのディレクトリを検索する bash スクリプトを作成しようとしています。一致するすべてのファイル名と各ファイルの情報が表示されます。
どこから始めればよいかわかりません.diff、find、grepを試してみましたが、うまくいきません...どんな提案でも大歓迎です。
diff -srq testdir1 testdir2 を使用すると、同一のファイルと一致することがわかりましたが、1 つのファイルのサイズが変更された場合は一致しなくなり、名前で一致するだけで済みます。
次のように書くことができます。
cd testdir1
files_in_testdir1=(*)
cd "$OLDPWD" # return to original directory
for file in "${files_in_testdir1[@]}" ; do
if [[ -e testdir2/"$file" ]] ; then
ls -ld testdir1/"$file" testdir2/"$file"
fi
done
これfiles_in_testdir1
により、 のファイル名のリストで名前が付けられた配列が作成さtestdir1
れ、配列を反復処理して、両方のディレクトリに存在するものを識別します。
2 つのディレクトリの任意の場所から一致するすべてのファイル名を再帰的に取得するには:
find dir1 -type f | xargs basename | xargs -I {} find dir2 -iname "{}"
これにより、dir1 内のすべてのファイルが検索され、フル パスからファイル名が選択され、dir2 の下でその名前が検索されます。
たとえば、特定の拡張子を検索する場合は、最初の find コマンドにさまざまな引数を使用できます。