Anda perlu menggunakan cp -t /home/shantanu/tosend
untuk memberi tahu bahwa argumennya adalah direktori target dan bukan sumber. Anda kemudian dapat mengubahnya menjadi -exec ... +
untuk mendapatkan cp
untuk menyalin file sebanyak mungkin sekaligus.
Jika maksud Anda adalah menyalin file yang ditemukan ke /home/shantanu/tosend
, Anda memiliki urutan argumen ke cp
terbalik:
find /home/shantanu/processed/ -name '*2011*.xml' -exec cp "{}" /home/shantanu/tosend \;
Harap perhatikan:find
perintah gunakan {}
sebagai placeholder untuk file yang cocok.
saya menghadapi masalah seperti ini...
Sebenarnya, dengan dua cara Anda dapat memproses find
output perintah di copy
perintah
-
Jika
find
output perintah tidak mengandung spasi apa pun yaitu jika nama file tidak mengandung spasi di dalamnya maka Anda dapat menggunakan perintah yang disebutkan di bawah ini:Sintaks:
find <Path> <Conditions> | xargs cp -t <copy file path>
Contoh:
find -mtime -1 -type f | xargs cp -t inner/
-
Namun seringkali file data produksi kami mungkin berisi ruang di dalamnya. Jadi sebagian besar perintah yang disebutkan di bawah ini lebih aman:
Sintaks:
find <path> <condition> -exec cp '{}' <copy path> \;
Contoh
find -mtime -1 -type f -exec cp '{}' inner/ \;
Pada contoh kedua, bagian terakhir yaitu titik koma juga dianggap sebagai bagian dari find
perintah, yang harus diloloskan sebelum menekan tombol enter. Kalau tidak, Anda akan mendapatkan kesalahan seperti ini
find: missing argument to `-exec'
Dalam kasus Anda, sintaks perintah salin salah untuk menyalin file find ke /home/shantanu/tosend
. Perintah berikut akan berfungsi:
find /home/shantanu/processed/ -name '*2011*.xml' -exec cp {} /home/shantanu/tosend \;