Laman » bagaimana untuk » Cara Salin Fail ke Direktori Banyak Dengan Satu Perintah di Linux

    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.