Saya di jalan:
/myuser/downloads/
Dan saya membuat sub folder:
/myuser/downloads/new
Sekarang saya ingin memindahkan semua file dan folder / sub-folder di folder unduhan ke sub-folder.
bagaimana saya bisa melakukan ini?
Saya mencoba:
mv -R *.* new/
Tetapi bergerak tidak mengambil -R switch sepertinya.
mv * new
Meskipun, itu akan merengek "tidak bisa bergerak baru untuk baru" atau yang serupa. Mungkinmv -i * new
bagi Anda mencegah overwrites.Jawaban:
Perintah
harus melakukan trik. Jika tidak berhasil, jalankan
shopt -s extglob
terlebih dahulu.Untuk juga memindahkan file / direktori tersembunyi (yang diawali dengan titik), jalankan juga
shopt -s dotglob
terlebih dahulu.Jadi, untuk meringkas:
(Selalu lebih baik tidak disetel
dotglob
untuk menghindari kejutan buruk).sumber
!(something)
?dev
ke lokasi saya saat ini, apakah saya harus menjalankannyamv !(dev) dev
?? Saya mendapatkan-bash: !: event not found
setopt extendedglob
untuk mengatur mode glob diperpanjang di zsh.^
adalah simbol pengecualian, jadimv ^new new
akan melakukan trik. kemudian untuk melihat semua opsi yang diatur dalam zsh yang dapat Anda gunakansetopt
dan untuk menonaktifkan mode glob diperpanjang yang dapat Anda lakukanunsetopt extendedglob
Saya menemukan sesuatu seperti ini tetapi sedikit lebih mudah untuk dipahami, dan itu mungkin bekerja dengan baik untuk Anda juga:
Menambahkan penjelasan ke solusi di atas:
Dari halaman manual:
mv -t
grep -v
Dijelaskan dengan langkah:
ls
akan mencantumkan file dalam direktori saat inigrep -v new
akan kembali disalurkan ke yang tidak cocok baruxargs mv -t new
akan memindahkan file yang disalurkan ke dari darigrep -v
ke direktori targetsumber
mv: illegal option -- t
. Apakah ini karena saya menggunakanzsh
?mv
, (artinya versi mv Anda berbeda dengan apa yang saya gunakan) os apa yang Anda gunakan? Saya percaya ketika saya menulis jawaban ini sayacentos
menggunakan distro linuxbash
.mv: illegal option -- t
yang sama karena osx's mv tidak memiliki-t
opsi.zsh
, jadi mungkin saja OSnya ..? Terima kasih telah mengklarifikasi!Ide sederhana. Dengan asumsi Anda berada di / myuser , ganti nama unduhan menjadi baru , buat direktori unduhan baru kemudian pindahkan baru ke dalamnya.
sumber
Jika Anda ingin memindahkan semua file dari folder ke salah satu subfoldernya, Anda dapat menggunakan perintah berikut:
Ini akan menemukan semua file dan kemudian memindahkannya ke subfolder Anda.
@waltinator: ditambahkan
-type d -name 'new' -prune
untuk mencegah traversal dari/myuser/downloads/new
.sumber
new
dan mencoba perintah ini, saya dapatkanmv: missing file operand
danTry 'mv --help' for more information
Anda dapat mencoba proses alternatif ini - tetap berada di jalur
tetapi, alih-alih pertama kali membuat
/myuser/downloads/new/
direktori, alih-alih buat folder di/myuser/
direktori, dengan perintahmkdir ../new
, lalu pindahkan semua filedownloads
kenew
, dan akhirnya pindahnew
kedownloads
. Anda bisa melakukan ini dalam satu baris, sementara di/myuser/downloads/
jalur, dengan perintah:Dalam hal ini, Anda tidak perlu khawatir tentang segala jenis "penyaringan" file / folder, karena
new
berada pada tingkat yang sama dengan pathdownloads
, sehingga Anda bisa memindahkan semuanyadownloads
ke dalamnew
, dan kemudian pindahnew
ke unduhan`.Namun, jika Anda sudah memiliki subfolder yang
new
dibuat dan tidak ingin membuat yang lain, jangan khawatir –– cukup ubahmkdir
perintah di sisi kiri yang pertama&&
dalam perintah yang ditunjukkan di atas menjadimv
perintah, mendorong kenew
atas di jalan; dengan kata lain, saat Anda masih di dalam/myuser/downloads/
, Anda dapat mengubahnyamkdir ../new
menjadimv new ..
. Kemudian subfoldernew
[di jalur/myuser/downloads/new/
] akan didorong ke atas/myuser/new/
, pada tingkat yang sama dengan/myuser/downloads/
, dan kemudian Anda dapat menjalankan sisa perintah seperti yang ditunjukkan di atas. Secara keseluruhan, kita miliki, mulai dari jalur/myuser/downloads/
:dan, karena Anda ingin "memindahkan semua file dan folder / sub-folder di folder unduhan ke sub-folder [
new
]", Anda selesai! Jika Anda ingin memindahkan hanya file (atau hanya folder atau [masukkan gerakan objek lebih rinci]), maka Anda harus menggunakan perintah lain yang bisa "filter" objek, sepertigrep
. Namun, perintah yang ditulis di atas cukup untuk tujuan Anda.sumber