Gunakan Automator untuk menyalin beberapa folder dengan jumlah folder berbeda saat menghapus folder induk

4
  1. salin whats di dalam kotak merah (folder gambar juga dengan konten) ke dalam kotak biru dan hapus folder.

  2. hasil sisanya akan menjadi SIZExSIZE - & gt; sizexsize.file dll. dan folder gambar dengan gambar.

enter image description here

Likenota
sumber
Ini pertanyaan Anda, jadi Anda harus bisa menghapusnya sendiri.
user3439894
itu tidak akan membiarkan aku itu tidak membiarkan aku tidak membiarkan aku tidak membiarkan aku tidak membiarkan aku tidak membiarkan aku
Likenota

Jawaban:

3

Untuk memastikan Pernyataan masalah jelas, mari asumsikan:

  • Anda memiliki sejumlah folder bernama menggunakan format 123x456, mis. 300x250, 728x90, dll. Ini semua terkandung dalam satu folder tingkat atas dengan beberapa nama arbitrer, mis. 01_FILE_NUMBER (tidak penting);
  • Setiap folder bernama like 123x456 terkandung a tunggal folder bernama folderA, dan tidak ada lagi;
  • Setiap folder dipanggil folderA mengandung a tunggal folder bernama folderB, dan tidak ada lagi;
  • Setiap folder dipanggil folderB mengandung a tunggal folder bernama identik dengan 123x456 folder tingkat kedua yang berisi cabang sub-pohon direktori ini, mis. 728x90;
  • Akhirnya, folder tingkat bawah ini berisi a .PNG file gambar yang nama filenya identik dengan folder induk, mis. 728x90.png;
  • Ringkas semua ini: semua .PNG file gambar memiliki jalur formulir 01_FILE_NUMBER/728x90/folderA/folderB/728x90/728x90.png. Penting , folderA tidak memiliki saudara kandung, dan folderB tidak memiliki saudara kandung, yaitu mereka tinggal di direktori orang tua mereka sendiri.

Dengan asumsi ini akurat ...

Saya akan melakukan sebagian besar pemrosesan file dan folder dengan Jalankan Script Shell aksi (gunakan opsi berikut: Kulit: /bin/bash, Masukan masukan: as arguments ):

Automator Workflow

Kerusakan:

① Alur kerja ini meminta pengguna untuk mencari direktori tingkat atas yang berisi folder yang akan diarsipkan. Menggunakan nama contoh dari atas, pengguna akan menavigasi ke folder 01_FILE_NUMBER; klik dua kali di atasnya; lalu klik "Buka" untuk mulai memproses isinya.

② Script shell memproses konten folder sebagai berikut:

  1. Seluruh folder tingkat atas dan isinya disalin ke desktop, di mana Anda menyatakan ingin arsip terakhir berada.
  2. Pemrosesan dilakukan dengan menggunakan salinan desktop ini, meninggalkan yang asli tidak tersentuh.
  3. Semua folder sedalam tiga tingkatan dipindahkan ke tingkat atas. Untuk mengilustrasikan ini, pertimbangkan contoh jalan 01_FILE_NUMBER/728x90/folderA/folderB/728x90/728x90.png: folder tingkat 1 adalah 728x90; folder tingkat 2 adalah folderA; folder tingkat 3 adalah folderB. Semua folder dipanggil folderB berada di tingkat ketiga ini. Mereka kemudian dipindahkan ke atas satu tingkat, dan sekarang akan berada di folder yang sama dengan folderA, di tingkat 2.
  4. Semua folder dua tingkat dalamnya tidak bernama folderB dihapus. Ini akan menghapus yang sekarang kosong folderA folder.
  5. Struktur folder terakhir sekarang terlihat seperti ini: 01_FILE_NUMBER/728x90/folderB/728x90/728x90.png.

③ A .zip arsip dibuat di desktop menggunakan nama yang sama dengan folder tingkat atas asli, mis. 01_FILE_NUMBER.zip.

Berikut adalah kode sumber bash untuk menyalin-n-tempel:

    cp -R "$1" ~/Desktop
    cd ~/Desktop/"$(basename "$1")"
    find . -type d -depth 3 -execdir mv {} ../ \;
    find . -type d -depth 2 ! -iname "folderB" -exec rm -R {} +
    pwd

Opsional ...

Desktop akan memiliki folder tingkat atas yang disalin dan formulir yang diarsipkan. Anda sekarang dapat dengan aman menghapus folder yang tidak dikompresi dari desktop (aslinya masih aman di lokasi aslinya) dan hanya menyimpan arsip. Untuk melakukan ini, tambahkan final Jalankan Shell Action di akhir alur kerja, menggunakan hal yang sama Kulit dan Masukan masukan opsi seperti sebelumnya, dan masukkan kode sumber ini:

    f="$1"
    rm -R "${f%.*}"
    open -R "$f"  # Reveals the archive in Finder

Peringatan: Tes alur kerja ini dengan set sampel file dan folder sampai Anda puas itu melakukan apa yang Anda inginkan. Alur kerjanya dihapus secara permanen folder, dan ini tidak dapat dipulihkan.

CJK
sumber
Komentar bukan untuk diskusi panjang; percakapan ini telah dipindahkan ke obrolan .
Monomeeth
@Likenota, jawabannya adalah Ya, Anda dapat menggunakan find untuk mencari dan memindahkan / menghapus file / folder yang Anda inginkan, yang ingin saya lakukan untuk menyelesaikan masalah Anda. Tapi ia mencoba mencari tahu file dan folder apa yang ingin Anda taruh di mana. Seharusnya itu tugas yang mudah, tetapi saya tidak beruntung menafsirkan keinginan Anda dengan benar.
CJK