Saya membuat skrip sederhana yang menyalin semua file dari DIRECTORYA yang tidak ada di DIRECTORYB. Saya melakukan ini melalui penggunaan perintah cp:
cp -u DIRECTORYA/* DIRECTORYB
Yang ingin saya lakukan adalah mengirim email ke administrator yang akan membuat daftar file yang telah disalin.
Jadi idealnya, sebelum saya menjalankan perintah di atas, saya ingin mendapatkan file yang akan disalin dan menyimpannya dalam variabel untuk digunakan nanti ketika membangun pesan email saya.
Dapatkah seseorang menunjukkan saya arah yang benar? Saya telah melihat ke dalam menggunakan grep tetapi saya tidak berpikir ini bisa dilakukan dengan perintah cp?
-v
bendera, untuk mencetak nama file saat disalin? Arahkan itu ke file atau langsung dalam variabel dan gunakan itu untuk membangun pesan Anda.cp
perintah memiliki opsi--attributes-only
yang memungkinkan untuk tidak menyalin file data, tetapi hanya direktori dan struktur file.variable=$(cp -v ...)
tangkap stdout cp. Lihat gnu.org/software/bash/manual/html_node/Command-Substitution.htmJawaban:
Saya tidak berpikir GNU
cp
memiliki sesuatu untuk membantu Anda jika Anda ingin melihat apa yang akan dilakukannya tanpa bertindak. Jika Anda ingin mencatat file yang dimodifikasi, Anda dapat menggunakan-v
opsi:Alih-alih
cp
, Anda dapat menggunakan rsync , yang jauh lebih kuat dan diinstal hampir di mana-mana kecuali untuk sistem embedded low-end (dan mudah dipasang di tempat yang tidak ada secara default).atau
sumber
Jika Anda ingin menjalankan
cp foo*bar whatever
, maka jalankanecho foo*bar whatever
saja.sumber
cp -u
dan dia mencari opsi kering seperti run untuk cp.Menurut halaman manual ,
ini adalah fitur yang menggabungkan dua tes, satu sepele untuk diimplementasikan dalam skrip ( hilang ) dan satu membutuhkan beberapa pekerjaan ( baru ). Anda dapat membuat skrip yang melaporkan apa yang perlu digunakan
comm
,diff
dantest
.Tidak ada
cp
utilitas standar yang menyediakan kemampuan untuk mengeringkan operasi penyalinan. Seperti yang disarankan,rsync
adalah cara untuk melakukan ini dengan utilitas yang tersedia secara umum. Tentu saja,rsync
biasanya digunakan untuk menyalin berdasarkan kriteria lebih dari sekadar yang baru atau tidak ada (ukuran file dan stempel waktu juga digunakan). Tapi itu bisa direduksi menjadi adilcp -u
.Untuk utilitas non-standar, ada
copy
utilitas yang saya tulis (dan tentu saja masih digunakan) pada akhir 1980-an. Itu mungkin terinspirasi olehmake
utilitas, karena opsi pertama yang saya tambahkan adalah-n
.Untuk contoh yang diberikan, ini akan digunakan seperti ini:
Bacaan lebih lanjut:
salin - salin / direktori salin utilitas
entri changelog dari Agustus 1988 :
sumber
Anda dapat menggunakan perintah diff. Saya memiliki pekerjaan yang menyalin beberapa file cadangan setiap hari. beberapa waktu saya perlu memeriksa apakah semua file disalin, di sini adalah sintaks:
dan tentu saja jika Anda ingin menyalinnya gunakan:
sumber
Pertimbangkan menggunakan rsync sebagai gantinya. Rsync bekerja dengan sangat baik pada salinan lokal dan tentu saja dapat melakukan apa yang Anda inginkan, setelah Anda menjelajahi lima belas trilyun opsi yang dimilikinya.
akan menunjukkan semua yang akan dilakukan, dan
akan melakukannya.
sumber