Cara Salin Fail ke Direktori Banyak Dengan Satu Perintah di Linux
Menyalin fail dengan baris arahan Linux adalah mudah. Walau bagaimanapun, bagaimana jika anda mahu menyalin fail yang sama ke beberapa lokasi berbeza? Itu juga mudah, dan kami akan menunjukkan kepada anda bagaimana untuk melakukannya dengan satu arahan.
Biasanya, untuk menyalin satu fail, anda akan menggunakan cp
arahan, menghubungkan ke fail sumber dan direktori destinasi:
cp ~ / Documents / FileToBeCopied.txt ~ / TextFiles /
Untuk menyalinnya ke dua lagi direktori, ramai orang akan menjalankan arahan dua kali lebih banyak, dengan destinasi yang berbeza:
cp ~ / Documents / FileToBeCopied.txt ~ / Dropbox /
cp ~ / Documents / FileToBeCopied.txt / media / lori / MYUSBDRIVE /
Walau bagaimanapun, kita boleh melakukan tugas yang sama dengan satu perintah:
echo dir1 dir2 dir3 | xargs -n 1 cp file1
Begini bagaimana arahan ini berfungsi. The echo
arahan biasanya menulis ke skrin. Walau bagaimanapun, dalam kes ini, kami ingin memberi makan output echo
arahan sebagai input kepada xargs
perintah. Untuk melakukan ini, kami menggunakan simbol paip ( |
) yang memberi output dari satu perintah sebagai input kepada yang lain. The xargs
arahan akan dijalankan cp
perintahkan tiga kali, setiap kali menambah laluan direktori seterusnya disambungkan kepadanya echo
arahan ke hujung cp
perintah. Terdapat tiga hujah yang disampaikan kepada xargs
, tetapi -n 1
pilihan pada xargs
arahan memberitahu hanya untuk memasukkan salah satu hujah tersebut pada satu masa ke cp
Perintah setiap kali ia dijalankan.
Jadi, untuk melekat dengan contoh kami dari sebelumnya, tiga berasingan cp
arahan di atas boleh digabungkan menjadi satu perintah seperti ini:
~ echo ~ / TextFiles / ~ / Dropbox / media / lori / MYUSBDRIVE | xargs -n 1 cp ~ / Documents / FileToBeCopied.txt
Ambil perhatian bahawa jika fail yang disalin ada dalam mana-mana direktori tujuan yang ditentukan, fail di destinasi tersebut akan diganti secara automatik. Anda tidak akan ditanya sama ada anda mahu menggantikan fail tersebut. (Biasanya, apabila anda menggunakan cp
arahan untuk menyalin fail ke satu lokasi, anda boleh menambah -i
pilihan untuk bertanya sama ada anda mahu menggantikan fail sedia ada. Walau bagaimanapun -i
pilihan adalah pilihan interaktif (ia menyebabkan cp
arahan untuk meminta input daripada pengguna) dan anda tidak boleh menggunakan pilihan interaktif dengan cp
arahan semasa menggunakannya bersama xargs
.)
Satu perkara yang perlu dipertimbangkan, ialah jika anda menyalin fail yang sangat besar, anda mungkin mahu menambah no-clobber ( -n
) kepada cp
arahan dalam arahan tunggal di atas. Pilihan ini secara automatik menghalang fail daripada ditindih di destinasi jika sudah ada di sana. Jika anda menyalin fail yang sangat besar ke atas rangkaian, mungkin lambat dan anda mungkin ingin mengelakkan menggunakan sumber yang diperlukan untuk menyalin dan menggantikan fail tersebut. Perintah berikut menambah -n
pilihan, dan tidak akan menyalin fail ke mana-mana destinasi yang disenaraikan dalam hujah kepada pernyataan echo, jika file tersebut sudah ada di destinasi tersebut.
~ echo ~ / TextFiles / ~ / Dropbox / media / lori / MYUSBDRIVE | xargs -n 1 cp -n ~ / Documents / FileToBeCopied.txt
Taip manusia echo, manusia xargs, atau cp manusia di baris perintah di Linux untuk maklumat lebih lanjut mengenai salah satu perintah ini.