GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Anda membedakan direktori hanya untuk file dari jenis tertentu?

Anda juga dapat menggunakan find dengan -exec untuk memanggil diff:

cd /destination/dir/1
find . -name *.xml -exec diff {} /destination/dir/2/{} \;

Kurangnya pelengkap --termasuk ... .

Kami dapat melakukan satu solusi, file pengecualian dengan semua file tetapi yang ingin kami sertakan. Jadi kami membuat file1 dengan menemukan semua file yang tidak memiliki ekstensi yang ingin kita sertakan, sed menangkap nama file dan hanya :

diff --exclude-from=file1  PATH1/ PATH2/

Misalnya:

find  PATH1/ -type f | grep --text -vP "php$|html$" | sed 's/.*\///' | sort -u > file1 
diff PATH1/ PATH2/ -rq -X file1 

Diambil dari ( versi dari) halaman manual:

-x PAT  --exclude=PAT
  Exclude files that match PAT.

-X FILE    --exclude-from=FILE
  Exclude files that match any pattern in FILE.

Jadi sepertinya -x hanya menerima satu pola saat Anda melaporkan tetapi jika Anda meletakkan semua pola yang ingin Anda kecualikan dalam file (mungkin satu pola per baris), Anda dapat menggunakan tanda kedua seperti ini:

$ diff /destination/dir/1 /destination/dir/2 -r -X exclude.pats

di mana dikecualikan.pats adalah:

*.jpg
*.JPG
*.xml
*.XML
*.png
*.gif

Anda dapat menentukan -x lebih dari sekali.

diff -x '*.foo' -x '*.bar' -x '*.baz' /destination/dir/1 /destination/dir/2

Dari bagian Membandingkan Direktori info diff (di sistem saya, saya harus melakukan info -f /usr/share/info/diff.info.gz ):

Untuk mengabaikan beberapa file saat membandingkan direktori, gunakan opsi '-xPATTERN' atau '--exclude=PATTERN'. Opsi ini mengabaikan file atau subdirektori apa pun yang nama dasarnya cocok dengan POLA pola shell. Tidak seperti di shell, titik di awal basis nama file cocok dengan wildcard di awal pola. Anda harus menyertakan PATTERN dalam tanda kutip sehingga shell tidak mengembangkannya. Misalnya, opsi -x '*.[ao]' mengabaikan file apa pun yang namanya diakhiri dengan '.a' atau '.o'.

Opsi ini terakumulasi jika Anda menentukannya lebih dari sekali. Misalnya, menggunakan opsi -x 'RCS' -x '*,v' mengabaikan file atau subdirektori apa pun yang nama dasarnya adalah 'RCS' atau diakhiri dengan ',v'.


Linux
  1. CentOS / RHEL :Cara Mengatur SFTP ke Chroot Jail hanya untuk Grup Tertentu

  2. CentOS / RHEL :Cara mengatur chroot jail untuk vsftp hanya untuk pengguna tertentu

  3. Cara mendapatkan perbedaan (hanya penambahan) antara dua file di linux

  1. Bagaimana Anda menghapus file yang lebih lama dari tanggal tertentu di Linux?

  2. Bagaimana membedakan hanya baris pertama dari dua file?

  3. Cara memetakan ulang kunci di Linux hanya untuk keyboard tertentu

  1. Cara Mengekstrak File Tar ke Direktori Tertentu atau Berbeda di Linux

  2. Bagaimana Cara Menggunakan Inotifywait Untuk Menonton Direktori Untuk Pembuatan File Ekstensi Tertentu?

  3. Bagaimana Cara Ssh Ke Direktori Tertentu?