Lệnh mv Linux đã di chuyển dữ liệu đến một vị trí không xác định?


11

Tôi đã vô tình thực hiện lệnh này trong SSH:

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

Bây giờ tất cả các dữ liệu trong thư mục magento đã biến mất. Có ai biết nó di chuyển đến đâu không?

Cảm ơn!


Để tự động xác định thư mục nào dữ liệu của bạn đã đi và nếu bạn đang sử dụng Bash, hãy làm điều này : a=( /var/www/vhosts/website/httpdocs/magento/* ); echo "${a[${#a[@]}-1]}". Nếu không ở Bash, điều này sẽ hoạt động : printf '%s\n' /var/www/vhosts/website/httpdocs/magento/* | tail -1. Mặt khác, nó rất có thể trong thư mục cuối cùng, chữ và số. Làm xong.
gniourf_gniourf

Câu trả lời:


20

Nếu mục cuối theo thứ tự chữ cái trong thư mục này là một thư mục, thì chúng ở đó.

Giả sử bạn có các tập tin a, bcvà thư mục d. Trong trường hợp này,

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

mở rộng đến

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

đó là một lệnh để di chuyển mọi thứ đến d. Nhìn vào đó nếu có bất cứ điều gì.

Nếu dkhông phải là một thư mục, mvnên đã phàn nàn về điều đó.


1
+1: xem bên dưới các thư mục con trong / var / www / vhosts / website / httpdocs / magento / * dir. Gợi ý: thư mục con vẫn ở trong thư mục magento, vì vậy mọi thứ sẽ dễ dàng vì hầu hết mọi thứ khác sẽ ở bên dưới nó, do đó chỉ còn lại một thư mục (không tính những thư bắt đầu bằng '.'). Nhập thư mục con đó và "mv * ..". Tuy nhiên, điều này có thể di chuyển những thứ trước đây nằm ngay bên dưới thư mục đó, vì vậy bạn sẽ phải đặt chúng trở lại. + bất kỳ tệp nào có cùng tên với tệp magento / * sẽ bị ghi đè lên (nếu "mv" của bạn không được đặt bí danh là "mv -i")
Olivier Dulac

2
Thủ thuật gọn gàng với mv *: mkdir zzz; mv *sẽ di chuyển tất cả nội dung của thư mục hiện tại vào thư mục zzz. Chỉ cần đảm bảo rằng bạn không có bất kỳ tệp nào sắp xếp theo thứ tự sau zzz.

2

Để mở rộng trả lời của glglgl:

Việc mở rộng ký tự đại diện dòng lệnh trong các hệ điều hành giống Unix được thực hiện bởi trình bao. Trong hầu hết các trường hợp với Linux, nó sẽ như vậy bash. Trang man của nó tuyên bố rõ ràng rằng việc mở rộng ký tự đại diện sẽ được sắp xếp theo thứ tự abc. Điều này cũng hợp lệ đối với hầu hết các shell tương thích Bourne.


Có lẽ không chỉ hầu hết, mà tất cả. Nếu không thì thiếu sự tương thích.
glglgl
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.