Saya memiliki dua folder dengan struktur subfolder yang serupa, yang ingin saya bandingkan. Sebagai contoh:
A
├── child-1
├── child-2
├── child-3
├── child-4
├── child-5
dan
B
├── child-1-some-text
├── child-2-more-text
├── child-3-nothing
├── child-6-random-text
├── child-7-more-random-text
Saya ingin membuat daftar semua subfolder dari Ayang merupakan awalan untuk subfolder Bdan daftar subfolder yang sesuai dari Bjuga. Output yang diharapkan adalah
child-1 -- child-1-some-text
child-2 -- child-2-more-text
child-3 -- child-3-nothing
Persyaratan sekunder: Jika banyak yang cocok B, maka harus memberikan kesalahan / peringatan.
Solusi saya :
cd A
for f in `ls -d */`;
do
cd B;
new_dirs=(`ls -1d $f*`);
cd -;
if [ ${#new_dirs[@]} -eq 0 ]
then
## DO_Nothing
continue;
elif [ ${#new_dirs[@]} -gt 1 ]
then
echo "Multiple matches to $f";
continue;
else
echo "Unique Match found to $f -- ${new_dirs[0]}";
continue;
fi;
done
Masalah:
Untuk nilai-nilai dari $f, yang tidak memiliki subfolder yang sesuai B, konstruksi array memberi saya kesalahan. misalnya:
ls: tidak dapat mengakses 'child-4 *': Tidak ada file atau direktori tersebut
Pertanyaan
- Bagaimana cara menghilangkan kesalahan ini?
- Apakah ada cara yang lebih baik untuk mencapai tujuan daripada yang ada di kode saya?
Terima kasih sebelumnya!
diff -rq DIR1 DIR2untuk membandingkan tidak hanya struktur direktori, tetapi isi file.