GNU/Linux >> Belajar Linux >  >> Linux

Mengalami Masalah Dengan Cari Perintah Pemangkasan Direktori?

Saya tidak yakin apa yang saya lakukan salah dalam hal ini. Saya telah membaca banyak postingan dan situs web tetapi masih mengalami masalah.

Saya perlu memeriksa sistem untuk file yang telah berubah dalam beberapa hari terakhir, tetapi saya harus melewati folder tertentu yang dipasang karena folder tersebut dipasang ke drive dengan banyak TB.

Berikut adalah pengaturannya:
Saya memiliki beberapa drive yang dipasang ke folder di dalam /usr/local/connect/
/usr/local/connect/logs -> dipasang ke NFS
/usr/ local/connect/DR01 –> mount ke DR share
beberapa lagi seperti ini…

Saya ingin menjalankan perintah find normal (atau perintah apa pun yang berfungsi untuk ini) yang mengecualikan direktori tersebut. Berikut adalah beberapa hal yang saya coba yang sepertinya tidak berhasil.

Temukan . ! -path “/usr/local/connect/” -type f -name “*.txt” -mtime -1

Temukan . -type f -path “/usr/local/connect/” -prune -o -name “*.txt” -mtime -1

Tak satu pun dari mereka tampaknya bekerja. Saya sudah mencoba melakukannya dalam urutan yang berbeda (seperti -type f first, atau prune first in line, dll.) juga. Tapi saya membaca Prune menghapus jalur yang sedang berjalan. Ini sepertinya harus menjadi hal yang mudah untuk dilakukan. Beri tahu saya jika Anda melihat kesalahan saya! Terima kasih sebelumnya!

Jawaban yang Diterima:

-path "/usr/local/connect/" akan cocok hanya pada jalur file yang persis /usr/local/connect/ . Itu tidak akan pernah cocok karena dengan find . , semua jalur akan dimulai dengan .

Jadi Anda ingin:

find / -path '/usr/local/connect/*' -type d -prune -o \
       -name '*.txt' -type f -mtime -1 -print

-print juga penting. Tanpa itu, akan ada -print implicit implisit untuk file yang cocok dengan seluruh ekspresi (jadi kedua bagian -o ).

Perhatikan bahwa Anda juga dapat menggunakan -xdev untuk mencegah melintasi batas sistem file apa pun.

Jika Anda ingin menjalankannya dengan find . ketika direktori saat ini adalah /usr/local , itu harus:

cd /usr/local &&
  find . -path './connect/*' -type d -prune -o \
         -name '*.txt' -type f -mtime -1 -print

Linux
  1. Temukan Kecualikan Direktori?

  2. Temukan File atau Direktori Terbesar?

  3. Bagaimana Cara Menghapus Direktori Secara Rekursif Dengan Wildcard?

  1. Cara Menyalin / Memindahkan File dan Direktori di Linux dengan perintah "cp" dan "mv"

  2. Temukan dan ganti dengan sed di direktori dan sub direktori

  3. bash menemukan direktori

  1. Temukan file dan direktori di Linux dengan perintah find

  2. Mengunggah direktori dengan sftp?

  3. bagaimana saya bisa menghapus direktori kosong secara rekursif di direktori home saya?