Cara menyalin beberapa file dan memindahkannya ke beberapa folder menggunakan terminal untuk Mac

0

Saya memiliki folder di desktop Mac saya yang disebut Bthepicsmemiliki 9 gambar yang ingin saya salin dan pindahkan ke sekitar 500 folder sekaligus. 500 folder ini terletak di folder di desktop Mac saya yang disebut bigcities. Saya tidak ingin harus melakukan ini secara manual dengan memilih semua 9 gambar dan menyeret masing-masing kelompok yang terdiri dari sembilan hingga 500 folder secara terpisah.

Adakah yang bisa menunjukkan kepada saya bagaimana melakukan ini menggunakan Terminal atau program Automator Mac ?

Mat
sumber
Folder bigcitieshanya berisi 500 folder tujuan dan tidak ada yang lain? ... atau adakah cara berbeda untuk mengidentifikasi 500 folder tujuan tersebut?
pabouk
Hai @pabouk, folder <code> bigcities </code> hanya berisi folder tujuan.
Matt

Jawaban:

0

Ini melingkupi setiap folder bigcities, dan menyalin semua gambar dari Bthepicske folder itu. Jalankan ini di Terminal, dan lihat apakah ini menghasilkan apa yang Anda inginkan. Anda cukup menyalin dan menempelkan blok kode ini.

find ~/Desktop/bigcities -type d -maxdepth 1 -print0 | while IFS= read -r -d '' folder; do
  echo cp ~/Desktop/Bthepics/*.jpg "$folder"
done

Untuk melakukan penyalinan yang sebenarnya, hapus echosebelum menempelkan. Saya berasumsi bahwa gambar sumber Anda memiliki ekstensi .jpg.

Kemudian cukup hapus gambar asli secara manual.

slhck
sumber
Halo! Terima kasih atas balasan cepatnya! Saya sangat baru dalam pengkodean, apakah saya harus mengetik "find" dan "done" dalam kode? Berarti bisakah saya menyalin dan menempelkan kode yang Anda berikan kepada saya ke Terminal?
Matt
Anda cukup ambil seluruh blok kode dan salin-tempel ke terminal. Seharusnya menghasilkan 500 baris, kira-kira cp IMAGE_1.jpg IMAGE_2.jpg ... IMAGE_9.jpg /Users/matt/Desktop/bigcities/FOLDER_1/, bagi Anda untuk memeriksa bahwa itu melakukan hal yang benar. Setelah yakin, Anda harus menghapus echodan kemudian menempelkannya lagi, yang akan melakukan penyalinan yang sebenarnya.
slhck
0

Berikut ini adalah kode sederhana yang tidak perlu menjalankan perintah eksternal ( find) dan menyalurkan output. Sisanya sama dengan jawaban slhck.

cd ~/Desktop/bigcities ; for folder in */ ; do
  echo cp ~/Desktop/Bthepics/*.jpg "$folder"
done

Kode ini memiliki satu kelemahan: Daftar folder tujuan tidak boleh melebihi 260.000 karakter (batas ukuran baris perintah pada Mac OS X 10.5). Untuk 500 folder, ini sekitar 500 karakter per nama folder.

pabouk
sumber
0

Anda harus terbiasa dengan perintah xargs untuk tugas otomatisasi seperti ini:

find ~/Desktop/bigcities -type d -print0 | xargs -I% cp ~/Desktop/Bthepics/image[1-9].jpg %/

itu jika 9 gambar Anda bernama image1.jpg image2.jpg ...
jika 9 gambar Anda berbeda nama:

find ~/Desktop/bigcities -type d -print0 | xargs -I% cp ~/Desktop/Bthepics/file1.jpg ~/Desktop/Bthepics/file2.jpg ... ~/Desktop/Bthepics/file9.jpg %/

perintah di akhir xargs sama dengan yang Anda jalankan secara manual dengan% akan digantikan oleh path folder

Btw, perintah ini akan menyalin gambar ke folder induk (~ / Desktop / bigcities), jadi Anda harus menghapusnya dengan 1 perintah:

rm ~/Desktop/bigcities/image[1-9].jpg

Saya harap Anda memahami ide saya dan menerapkannya untuk kasus Anda.

incous
sumber