Bagaimana saya dapat menemukan file * .mp3 saja dengan perintah rekursif seperti ls -R *.mp3
pada direktori yang berisi beberapa sub-direktori dan pada akhirnya salin file-file ini dalam direktori yang saya pilih.
Terima kasih atas dukunganmu.
command-line
V 3 L 3 N 0
sumber
sumber
find /path/to/dir/ -name '*.c' | xargs cp -t /target/
xargs
biasanya jauh lebih cepat. Saya baru saja menjalankan tes cepat di sini menemukan banyak file c dan menjalankannyals -l
. Ini 0m2.420s untukxargs
dan 0m25.494s untuk-exec
... Jelas dalam hal inicp
operasi akan mengambil sebagian besar waktu sehingga mungkin tidak masalah tetapi perlu dicatat.-n`` switch to the
perintah cp` untuk menghindari menimpa dalam kasus duplikat nama (atau menulis skrip yang memeriksa duplikat sebelum menyalin dan mengganti nama target yang diperlukan)Ada juga cara lain untuk melakukannya yang menurut saya akan sesuai dengan tujuan Anda dengan sempurna. Anda dapat menggabungkan
find
dengan satuwhile
lingkaran dan bahkan tidak perlu menggunakan salah satuexec
atauxargs
sama sekali. Jika, misalnya Anda ingin menyalinmp3s
dari folder unduhan ke folder musik Anda, Anda akan menggunakan skrip berikut, yang telah saya gunakan berkali-kali.Anda dapat memodifikasinya sesuai keinginan dengan mengubah direktori yang
find
mencari dan menempatkan file yang dihasilkan di dalamnya ; jika tidak ada direktori yang dinyatakan,find
akan mencari seluruh folder home. Anda juga dapat mengubahcp
kemv
atau perintah lain. Ini cukup cepat, karena saya baru saja mengujinya dengan 3945.jpg
file! Salin ke editor teks, simpan dan kemudian jalankan dengan menjalankanchmod +x myscript
.Pada wiki Bash yang dicatat ini ditunjukkan betapa bermanfaatnya menggabungkan
while
loop danread
perintah untuk memproses output darifind
perintah; dan cara saya melakukannya memastikan bahwa skrip tidak akan rusak jika ia menemukan nama file dengan spasi atau karakter tak terduga atau khusus lainnya.Untuk informasi lebih umum tentang
find
perintah, masukkan di terminalman find
atau lihat manual Ubuntu online . Untuk pengantar yang bagus untuk penggunaan find, lihat artikel ini juga.sumber
find ~/Downloads -type f -iname '*.mp3' | while read mp3file; do cp "$mp3file" ~/Music; done
sederhana?-n`` switch to the
perintah cp` untuk menghindari menimpa dalam kasus duplikat nama (atau menulis skrip yang memeriksa duplikat sebelum menyalin dan mengganti nama target yang diperlukan)