Cara 1: Di browser file grafis Anda, menggunakan tampilan hierarki
Saya berasumsi tujuan Anda sebenarnya adalah membuat pilihan untuk setiap file, dan tidak secara tegas diminta . Namun, jika Anda lebih suka diminta tentang setiap file di terminal, lihat Cara 2 di bawah ini.
Sebagian besar browser file grafis mendukung tampilan hierarki di mana Anda dapat melihat beberapa level hierarki direktori secara bersamaan. Anda dapat menyalin atau memindahkan file dari tampilan ini, baik secara individu atau dengan memilihnya dan kemudian beroperasi pada seluruh pilihan. Ini berfungsi bahkan dengan file dari banyak folder.
Di beberapa browser file, seseorang harus masuk ke menu Preferensi untuk mengaktifkan tampilan hierarki. Di Caja, browser file MATE, selalu diaktifkan pada tampilan daftar. Klik Lihat → Daftar (atau tekan Ctrl+ 2) untuk beralih ke tampilan daftar. Setiap direktori memiliki segitiga kecil yang menghadap ke kanan di sebelah kiri, yang mengindikasikan dapat diperluas. Untuk membuka folder, klik segitiga itu, atau tekan tombol →(panah kanan) ketika folder tersebut dipilih. Dalam contoh ini, saya telah memilih semuanya satu per satu dan menyeret semuanya sekaligus ke tujuan mereka:
Dengan asumsi sumber dan tujuan berada pada drive yang sama, menyeret gerakan secara default. Jika Anda ingin menyalin sebagai gantinya, Anda akan menahan Ctrltombol.
Secara teori, mudah untuk memperbaiki kesalahan saat menggunakan metode ini, karena sebagian besar browser file (termasuk Caja) mendukung Ctrl+ Zuntuk membatalkan tindakan terbaru, termasuk tindakan batch. Namun, saya beruntung karena itu. Terkadang file kembali ke folder yang salah.
Kabar baiknya adalah bahwa Anda tampaknya bekerja dengan sebagian besar dokumen teks, yang cenderung kecil, sehingga Anda dapat membuat cadangan tambahan tar
terlebih dahulu tanpa banyak kesulitan. Saya sarankan melakukan itu terlepas dari metode apa yang Anda gunakan.
Cara 2 : find
Perintah dengan -ok
aksi
Ini umum digunakan find
untuk menemukan file dan meneruskan jalur mereka ke perintah eksternal yang sewenang-wenang dengan -exec
dan -execdir
tindakan. Tetapi find
juga memiliki -ok
dan -okdir
meminta itu sebelum setiap kali mereka menjalankan perintah. Jika Anda benar-benar ingin diminta di terminal tentang setiap file, saya pikir ini adalah cara untuk pergi.
Ketika dilakukan untuk menghasilkan efek yang sama seperti yang ditunjukkan di atas, yang terlihat seperti ini:
ek@Gnar:~$ find Texts -xtype f -ok mv -t 'Glorious Destination Folder' {} \;
< mv ... Texts/Robert Frost/New Hampshire.pdf > ? y
< mv ... Texts/Robert Frost/In The Clearing.pdf > ? n
< mv ... Texts/Helen Keller/The Story of My Life.pdf > ? y
< mv ... Texts/Saki/The Short Stories of Saki.pdf > ? y
< mv ... Texts/Jane Austen/Sense and Sensibility.pdf > ? n
< mv ... Texts/Jane Austen/Pride and Prejudice.pdf > ? y
< mv ... Texts/Richard Connell/The Stolen Crime.pdf > ? n
< mv ... Texts/Richard Connell/The Most Dangerous Game.txt > ? y
< mv ... Texts/Mary Wollstonecraft Shelley/Mathilda.epub > ? n
< mv ... Texts/Mary Wollstonecraft Shelley/Frankenstein: Or, The Modern Prometheus.pdf > ? y
< mv ... Texts/W. E. B. Du Bois/The Souls of Black Folk.pdf > ? n
< mv ... Texts/W. E. B. Du Bois/Darkwater: Voices from within the Veil.htm > ? y
Ganti Texts
dengan direktori sumber (yang bisa saja .
jika Anda akan cd
melakukannya) dan Glorious Destination Folder
dengan direktori tujuan yang sebenarnya.
Ini menjalankan satu perintah per file; tidak seperti -exec
dan -execdir
, -ok
dan -okdir
tidak mendukung +
di tempat \;
untuk lulus beberapa jalur berhasil ditemukan dalam doa yang sama dari perintah. Akibatnya, Anda tidak perlu menggunakan -t dest
bentuk mv
. Saya sarankan tetap melakukannya, baik secara umum dengan find
dan khususnya dalam situasi ini sehingga prompt lebih mirip dengan perintah yang diminta.
Ketika perintah itu ditulis, jika find
menemukan tautan simbolis yang pada akhirnya menunjuk ke file biasa, itu (tautan, bukan target) dipindahkan daripada diabaikan. Jika Anda benar-benar ingin mengoperasikan hanya satu file biasa, gunakan -type f
saja -xtype f
.
Anda mungkin ingin melakukan ini dalam satu script
sesi sehingga Anda bisa mencari tahu apa yang terjadi jika Anda melakukan kesalahan. Tetapi sekali lagi, tidak ada alasan untuk tidak memiliki cadangan.
Cara 3: Hasilkan manifes dan edit
Setidaknya selama file tidak memiliki baris baru dalam namanya, Anda bisa mulai dengan menggunakan find
perintah sederhana untuk membuat manifes - file yang mencantumkan nama file yang Anda (dalam hal ini berpotensi) tertarik pada :
find Texts -xtype f >manifest
Ganti manifest
dengan nama apa pun yang Anda suka untuk file yang berisi daftar file yang sedang dipertimbangkan (dan sesuaikan arah yang tersisa sesuai).
Seperti di atas, ganti Texts
dengan direktori sumber Anda yang sebenarnya, yang bisa jadi .
jika Anda sudah cd
melakukannya. Namun, jika Texts
adalah jalur relatif (termasuk jika itu .
) maka Anda harus memastikan berada di lokasi yang sama nanti ketika Anda benar-benar melakukan gerakan.
Setelah menjalankan find
perintah itu, buka manifest
di editor teks. Ini bisa menjadi nano
, vim
, emacs
, gedit
, pluma
, dll editor, komentar keluar garis yang nama file yang Anda tidak ingin pindah dengan menempatkan #
pada awal mereka. Beberapa editor akan menyoroti garis-garis itu secara berbeda bahkan ketika itu tidak mengenali file Anda dari format apa pun yang diketahuinya memiliki komentar. Sebagian besar tidak akan, dan alasan sebenarnya saya menyarankan untuk melakukannya dengan cara ini adalah bahwa Anda, sebagai manusia, cenderung memiliki pengalaman mengomentari baris dalam file konfigurasi (dan mungkin dalam kode sumber). Saya pikir ini lebih intuitif, dan lebih sedikit rawan kesalahan, daripada menandai garis yang ingin Anda pindahkan.
Tentu saja, Anda bisa menghapus saja baris untuk file yang tidak ingin Anda pindahkan. Keuntungan dari mengomentari mereka adalah nanti akan jelas apa yang Anda lakukan.
Dalam contoh saya, ini adalah apa yang tampak seperti isi file setelah saya mengeditnya:
Texts/Robert Frost/New Hampshire.pdf
# Texts/Robert Frost/In The Clearing.pdf
Texts/Helen Keller/The Story of My Life.pdf
Texts/Saki/The Short Stories of Saki.pdf
# Texts/Jane Austen/Sense and Sensibility.pdf
Texts/Jane Austen/Pride and Prejudice.pdf
# Texts/Richard Connell/The Stolen Crime.pdf
Texts/Richard Connell/The Most Dangerous Game.txt
# Texts/Mary Wollstonecraft Shelley/Mathilda.epub
Texts/Mary Wollstonecraft Shelley/Frankenstein: Or, The Modern Prometheus.pdf
# Texts/W. E. B. Du Bois/The Souls of Black Folk.pdf
Texts/W. E. B. Du Bois/Darkwater: Voices from within the Veil.htm
Kemudian Anda dapat memfilter garis komentar dengan grep
dan pipa hasilnya xargs
untuk meneruskannya ke mv
:
grep -Pv '^\s*#' manifest | xargs -d '\n' mv -t 'Glorious Destination Folder'
Seperti di atas, ganti Glorious Destination Folder
dengan nama tujuan yang sebenarnya. Itu dia; file Anda dipindahkan. Anda tentu saja dapat menulis echo
sebelumnya mv
untuk melihat perintah yang akan dijalankan terlebih dahulu, jika Anda mau.
Cara perintah itu bekerja adalah:
- The
grep
perintah baris output dari manifest
yang tidak ( -v
) mulai ( ^
) dengan opsional ( *
) spasi ( \s
) diikuti oleh literal #
karakter. The -P
bendera pilih PCRE sebagai dialek ekspresi reguler (yang memungkinkan \s
yang saya anggap lebih mudah dibaca daripada tradisional [[:space:]]
).
- The
xargs
perintah membagi input (yang merupakan output dari grep
) ke bidang baris-dihentikan ( -d '\n'
), maka pasta masing-masing bidang (tanpa baris baru terminating) sebagai argumen yang terpisah pada akhir perintah mv -t 'Glorious Destination Folder'
, yang berjalan.
-ok
IMHO jawaban terbaikBerikut ini skrip kecil (
mv-confirm.sh
):Penggunaan sampel:
jangan lupa untuk membuat skrip dapat dieksekusi (
chmod +x mv-confirm.sh)
.NB
Karena saya tidak ingin mengacaukan file Anda, saya menambahkan
echo
sebelummv
perintah yang sebenarnya . Jangan ragu untuk menghapusnya karena benar-benar memindahkan file.sumber