ฉันจะย้ายเฉพาะไฟล์ธรรมดา (ไม่ใช่ไดเรกทอรี) จากโฟลเดอร์หนึ่งใน Linux ไปยังโฟลเดอร์อื่นโดยใช้mv
คำสั่งได้อย่างไร
ฉันลองmv * ~/
แล้ว แต่มันคัดลอกทุกอย่างรวมถึงไดเรกทอรี
ฉันจะย้ายเฉพาะไฟล์ธรรมดา (ไม่ใช่ไดเรกทอรี) จากโฟลเดอร์หนึ่งใน Linux ไปยังโฟลเดอร์อื่นโดยใช้mv
คำสั่งได้อย่างไร
ฉันลองmv * ~/
แล้ว แต่มันคัดลอกทุกอย่างรวมถึงไดเรกทอรี
คำตอบ:
คุณสามารถลอง
find . -maxdepth 1 -type f -exec mv {} destination_path \;
-exec
ฉันเป็น "ใช้ค้อนสำหรับทุกอย่าง" คนที่แต่งตัวประหลาดดังนั้นฉันจึงใช้โปรแกรมเชลล์ bourne สำหรับสิ่งที่คนอื่นใช้โปรแกรมภายนอกสำหรับ ...
for file in * .*
do
test -f "$file" && mv "$file" "$HOME"/
done
บางคนชอบทำสิ่งเล็ก ๆ น้อย ๆ ให้เสร็จ แต่ฉันก็เป็นคนพิมพ์ดีดที่รวดเร็วและฉันก็มีสิ่งต่าง ๆ เช่นนี้อยู่ในสมองของฉันดังนั้นมันจึงไม่ใช่ความเจ็บปวดที่จะทำแบบนี้แทนที่จะมองหาที่แน่นอน ข้อโต้แย้งเพื่อค้นหาและผู้บริหารและทั้งหมดที่
YMMV แม้ว่า ...
@ Mereghost อยู่ใกล้มาก นี่คือสิ่งที่ฉันจะย้ายไฟล์ทั้งหมด (รวมถึงไฟล์ที่ซ่อน) แต่ไม่ใช่ไดเรกทอรี:
find . -maxdepth 1 -type f -name '*' -exec mv -n {} /destination_path \;
.
หลังจากที่พบจะถือว่าคุณไดเรกทอรีปัจจุบันเป็นแหล่งที่มาของไฟล์ที่คุณต้องการที่จะย้าย หากไม่สามารถแก้ไขคำสั่งได้ดังต่อไปนี้:
find /source_path -maxdepth 1 -type f -name '*' -exec mv -n {} /dest_path \;
หากคุณต้องการย้ายเฉพาะไฟล์ปกติและไม่ใช่ไฟล์ที่ซ่อนอยู่:
find . -maxdepth 1 -type f -name '[!.]*' -exec mv -n {} /dest_path \;
หากคุณต้องการย้ายเฉพาะไฟล์ที่ซ่อนอยู่และไม่ใช่ไฟล์ปกติ:
find . -maxdepth 1 -type f -name '.*' -exec mv -n {} /dest_path \;
หากคุณไม่มีโฟลเดอร์ที่มีชื่อมีจุดอยู่คุณสามารถย้ายโฟลเดอร์ทั้งหมดได้ง่ายๆ
mv ~ / destinationfolder
(ข้อสันนิษฐานของฉันคือไฟล์ทั้งหมดของคุณเป็นบางสิ่งบางอย่าง (ในกรณีของฉันมักจะเป็นทั้งหมด))
แต่ต้องขอบคุณคำตอบอื่น ๆ - มีประโยชน์มาก ขอบคุณ
คุณสามารถใช้ค้นหา
find * -maxdepth 1 -type f -exec mv {} ~ \;
mv `find ./sourcedir/* -type f` ./destdir
find
ของ-exec
ตัวเลือกวิธีที่ดีที่สุดที่จะหลีกเลี่ยงปัญหา