Saya ingin menyalin file dengan banyak ekstensi ke direktori tujuan tunggal.
Sebagai contoh, saya dapat menggunakan perintah berikut untuk menyalin semua file .txt di direktori kerja ke direktori bernama destination
:
cp -v *.txt destination/
Dan saya dapat menggunakan yang berikut ini untuk menyalin semua direktori .png di direktori kerja ke destination
:
cp -v *.png destination/
Tetapi perlu waktu untuk mengetik ini sebagai perintah yang terpisah (bahkan dengan menggunakan sejarah perintah). Jadi, apakah ada cara yang saya dapat memberitahu cp
untuk menyalin file dengan baik pola *.txt
atau pola *.png
ke destination
? Idealnya, saya ingin dapat menentukan lebih dari dua pola - seperti menginstruksikan cp
untuk menyalin semua *.txt
atau *.png
atau *.jpg
file ke destination
, misalnya.
Saya yakin bahwa semua ini dimungkinkan menggunakan skrip shell - Saya menggunakan bash
, misalnya - tetapi apakah ada cara untuk melakukannya lebih sederhana, hanya dari konsol? Bisakah saya menggunakan ekspansi brace untuk melakukannya?
Saya tahu bahwa mungkin untuk menyalin semua file di direktori kerja kecuali yang cocok dengan pola tertentu , tetapi karena direktori kerja saya berisi ekstensi file yang jauh lebih banyak yang saya tidak ingin salin daripada yang saya lakukan , itu akan merepotkan.
Apakah Anda punya pemikiran tentang ini?
cp -v *.txt *.png destination/
?Jawaban:
Perluasan brace akan menyelesaikan pekerjaan.
man bash
dan cariBrace Expansion
.EDIT:
Sesuai dengan permintaan OP, perintah di atas tidak memiliki opsi verbose:
sumber
cp data/images/*.{jpg,jpeg,png,mp4} destination/
danmp4
file tidak ada, saya mendapatkanNo such file or directory
kesalahan yang merusak skrip. Bisakah saya membuat beberapa ekstensi dengan anggun menangani format yang hilang?Itu berhasil!
sumber