Saya ingin mencadangkan hanya folder musik FLAC saya. File FLAC dapat disarangkan seperti itu di dalam folder:
AlbumName/
├── Files/
│ ├── someSong01.flac
│ ├── someSong02.flac
├── Covers/
│ ├── someCover01.jpg
│ └── someCover02.jpg
Bagaimana cara menyalin dan memindahkan semua folder AlbumName dengan struktur dan konten yang sesuai yang mengandung suatu tempat di dalam setidaknya satu file FLAC (saya akan menganggap ini cukup untuk mengatakan: musik dalam format FLAC)
Sunting: File FLAC bisa diulang; jadi saya dapat memiliki:
AlbumName2/
├── someSong01.flac
├── someSong02.flac
├── Covers/
│ ├── someCover01.jpg
| └── someCover02.jpg
Dan saya ingin menyalin folder-folder itu dengan semua isinya, bukan hanya file FLAC, dan rekatkan ke direktori lain.
Jadi kalau saya punya juga
AlbumName3/
├── someSong01.mp3
├── someSong02.mp3
├── Covers/
│ ├── someCover01.jpg
| └── someHiddenSong.flac
dan
AlbumName4/
├── Files/
│ ├── someSong01.mp3
│ ├── someSong02.mp3
├── Covers/
│ ├── someCover01.jpg
│ └── someCover02.jpg
Saya ingin cp secara rekursif ke direktori lain AlbumName, AlbumName2 dan AlbumName3 tetapi tidak AlbumName4
EDIT: Tidak ada jawaban yang benar-benar melakukan apa yang saya inginkan, jadi saya akhirnya menggunakan sesuatu seperti itu:
find -mindepth 2 -name '*.flac' -exec dirname {} \; | awk -F "/" '{print $2}' | sort -u | while read -r dirname; do cp -r "$dirname" "backup/"; done
pada dasarnya saya daftar semua file flac, saya mengambil folder root menggunakan awk, saya menghapus duplikat dan saya melakukan apa yang saya inginkan
sumber
Jawaban:
Opsi adalah menggunakan rsync, yang hanya menyalin file flac dan mempertahankan struktur direktori:
sumber
hai temanku bisa kamu gunakan
sumber
--parents
sebelumnya!*/*.flac
! Tidak akancp -r --parents AlbumName/ newdirectory/
cukup?shopt -s globstar
), lalu gunakan**/*.flac
untuk glob. Bintang ganda akan cocok dengan nol atau lebih direktori.Jawaban yang bagus
Saya ingin menambahkan satu cara lagi, Anda juga dapat menggunakan kombinasi find dan cpio
find . -name "*.flac" -print0|cpio --null -pdm destination/
Satu juga dapat menggunakan
rsync
atau menulis skrip shell untuk menemukan dan menyalin file dengan struktur direktori.sumber
Jawaban 1: Anda juga dapat menggunakan
find
perintah yang sama.Penjelasan:
mkdir
membuat direktori baru.find
perintah ditemukan*.flac
file yang terletak diAlbumName
folder.exec
perintah mengeksekusicp
perintah untuk masing-masing nama file yangfind
telah kembali.Jawaban 2: Anda juga dapat menggunakan
find
perintah denganxargs
sertaInformasi lebih lanjut: temukan , xargs
sumber
find | xargs
akan merusak nama file dengan spasi, alih-find -print0 | xargs -0
alih gunakan .1 2.flac
file yang memiliki ruang dalam nama file. Bisakah Anda memberi tahu saya nama file yangfind | xargs
gagal?find -print0 | xargs -0
touch "a space" && find . | xargs ls
.Baru saja menyelesaikan masalah yang sama untuk perpustakaan musik saya dan menyelesaikannya menggunakan skrip yang disesuaikan berikut ini. Saya tidak sepenuhnya merekayasa dengan variabel yaitu, karena saya hanya bermaksud menggunakannya sekali :).
Script memindahkan setiap direktori yang berisi file flac termasuk semua file lain dan subdirektori ke lokasi baru menggunakan rsync. rsync memungkinkan Anda untuk melanjutkan skrip jika berhenti selama proses.
Struktur perpustakaan saya:
Struktur perpustakaan baru:
(1) mulai skrip shell berikut di tujuan SUMBER (ganti TARGET dengan direktori masing-masing pilihan Anda - Saya baru saja menggunakan jalur absolut)
baris 1: temukan semua direktori yang berisi file flac dan pipa (|) yang menjadi sortir
baris 2: hapus duplikat dengan sortir dan pipa yang daftar ke dalam do loop
baris 3: untuk setiap direktori lakukan
baris 4: tunjukkan direktori dalam proses
baris 5: rsync ke direktori target plus hapus sumber dan struktur pertahankan (-R) di
baris lokasi target 6: hapus direktori kosong (karena rsync hanya menghapus file)
(2) setelah berhasil mengeksekusi skrip di (1) Anda dapat menjalankan perintah berikut di direktori sumber
Perintah ini menghapus semua direktori kosong yang tidak dihapus dalam skrip. Yakni direktori "Artis", di mana semua subfolder / album menyertakan file flac.
sumber