Perintah Linux mv memindahkan data ke lokasi yang tidak diketahui?

11

Saya tidak sengaja menjalankan perintah ini di SSH:

mv /var/www/vhosts/website/httpdocs/magento/*

Sekarang semua data dalam direktori magento hilang. Adakah yang tahu ke mana ia pindah?

Terima kasih!

rdrb-3
sumber
Untuk otomatis menentukan di mana direktori data Anda pergi dan jika Anda menggunakan Bash, lakukan ini: a=( /var/www/vhosts/website/httpdocs/magento/* ); echo "${a[${#a[@]}-1]}". Jika tidak di Bash, ini harus bekerja: printf '%s\n' /var/www/vhosts/website/httpdocs/magento/* | tail -1. Kalau tidak, itu sangat mungkin di direktori terakhir, secara alfanumerik. Selesai
gniourf_gniourf

Jawaban:

20

Jika entri terakhir menurut abjad dalam direktori ini adalah direktori itu sendiri, mereka ada di sana.

Misalkan Anda memiliki file a, bdan cdirektori d. Pada kasus ini,

mv /var/www/vhosts/website/httpdocs/magento/*

meluas ke

mv /var/www/vhosts/website/httpdocs/magento/a /var/www/vhosts/website/httpdocs/magento/b /var/www/vhosts/website/httpdocs/magento/c /var/www/vhosts/website/httpdocs/magento/d

yang merupakan perintah untuk memindahkan semuanya d. Lihat di sana jika ada sesuatu.

Jika dbukan direktori, mvseharusnya mengeluh tentang itu.

glglgl
sumber
1
+1: lihat di bawah subdirs di direktori / var / www / vhosts / website / httpdocs / magento / *. Petunjuk: subdir masih berada di dalam direktori magento, jadi itu seharusnya mudah karena hampir semua yang lain sekarang berada di bawahnya, maka seharusnya hanya ada satu dir tersisa (tidak termasuk yang dimulai dengan '.'). Masukkan subdir itu, dan "mv * ..". Ini bisa memindahkan hal-hal yang sebelumnya tepat di bawah direktori itu, jadi Anda harus mengembalikannya. + file apa pun yang memiliki nama yang sama dengan file magento / * akan ditimpa (jika "mv" Anda tidak alias "mv -i")
Olivier Dulac
2
Trik rapi dengan mv *: mkdir zzz; mv *yang akan memindahkan semua isi direktori saat ini ke direktori zzz. Pastikan Anda tidak memiliki file yang mengurutkan secara leksagrafis setelah zzz.
2

Untuk memperpanjang balasan glglgl:

Ekspansi wildcard baris perintah di sistem operasi mirip Unix dilakukan oleh shell. Dalam kebanyakan kasus dengan Linux, itu akan menjadi bash. Halaman manualnya secara eksplisit menyatakan bahwa ekspansi wildcard akan diurutkan berdasarkan abjad. Hal yang sama harus berlaku untuk sebagian besar shell yang kompatibel dengan Bourne.

pabouk
sumber
Mungkin bukan hanya sebagian besar, tetapi semua. Kalau tidak, tidak ada kompatibilitas.
glglgl