bagaimana agar 'menemukan' tidak mengembalikan direktori saat ini


11

Saat ini saya mencoba find(dan menyalin) semua file dan struktur folder yang cocok dengan pola tertentu, dalam direktori yang ditentukan dan saya sangat di sana!

Secara khusus, saya ingin menyalin semua folder secara rekursif yang tidak dimulai dengan karakter '_' dari jalur yang ditentukan.

find /source/path/with/directories -maxdepth 1 -type d ! -name _\* -exec cp -R {} /destination/path \;

Di / source / path / with / directories / path adalah direktori spesifik mesin yang dimulai dengan '_' dan lainnya, dan saya hanya tertarik untuk menyalin yang lain. Untuk alasan di luar saya, perintah find mengembalikan direktori / source / path / with / directories /, dan karenanya menyalin isinya, direktori dimulai dengan '_' yang disertakan.

Adakah yang punya petunjuk mengapa itu terjadi?

Terima kasih,

Pascal


Jawaban:


14

findmengembalikan path root karena cocok dengan kriteria Anda — yaitu itu adalah direktori, dan itu tidak dimulai dengan _.

Anda sedang mencari -mindepth 1, saya kira:

$ cd /tmp
$ mkdir a
$ touch a/b
$ mkdir a/c
$ touch a/c/d
$ find a
a
a/b
a/c
a/c/d
$ find a -mindepth 1
a/b
a/c
a/c/d

Referensi: temukan halaman manual


Luar biasa! bekerja seperti yang saya inginkan. Saya membuatnya bekerja dengan menambahkan! -nama 'file' tetapi saya merasa salah ...
Pinpin

0

Ubah dari:

find /source/path/with/directories ...

untuk:

(shopt -s dotglob; find /source/path/with/directories/* ... )

Cara /source/path/with/directoriesitu tidak akan dimasukkan.

The shopt -s dotglobadalah agar *juga akan cocok file dan direktori dimulai dengan .(file tersembunyi, direktori).

Dan semuanya dibungkus dengan sub-shell (...)untuk membatasi efek shopthanya di dalam sub-shell, jika tidak Anda harus membatalkannya nanti dengan shopt -u dotglob.


Itu akan gagal untuk entri direktori yang dimulai dengan .. Jangan coba-coba .*, atau Anda akan mencocokkan seluruh barang yang tidak pernah Anda inginkan. ;-)
zigg

Poin bagus, perbarui jawabannya, tambahkan menggunakan shopt.
janos
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.