เป็นไปได้ซ้ำ:
ฉันจะเก็บ และ .. จาก. * การขยายตัว?
ฉันรู้เกี่ยวกับ
mv * ~/whatever
mv .* ~/whatever
แต่นั่นพยายามที่จะย้าย.
และ..
ซึ่งทำให้ฉันเจ็บปวด มีวิธีการ mv ไฟล์ทั้งหมดรวมถึง.*
ไฟล์ แต่ไม่รวมไดเรกทอรีปัจจุบันและมันเป็นผู้ปกครอง?
เป็นไปได้ซ้ำ:
ฉันจะเก็บ และ .. จาก. * การขยายตัว?
ฉันรู้เกี่ยวกับ
mv * ~/whatever
mv .* ~/whatever
แต่นั่นพยายามที่จะย้าย.
และ..
ซึ่งทำให้ฉันเจ็บปวด มีวิธีการ mv ไฟล์ทั้งหมดรวมถึง.*
ไฟล์ แต่ไม่รวมไดเรกทอรีปัจจุบันและมันเป็นผู้ปกครอง?
คำตอบ:
จากคู่มือ Bash shopt
ส่วน:
dotglob If set, bash includes filenames beginning with a `.' in the results
of pathname expansion.
shopt
สามารถใช้เพื่อตั้งค่า "ตัวเลือกเชลล์" บางอย่างตามที่อธิบายไว้ในคู่มือ man bash
ดู
ดังนั้น
shopt -s dotglob
mv * ~/whatever
ทำในสิ่งที่คุณต้องการ ทดสอบด้วยเช่น
shopt -s dotglob
ls -d *
เพื่อดูว่าไฟล์ใดถูกจับคู่
เนื่องจากเป็นวิธีการทุบตีตามความเป็นจริงไม่น่าแปลกใจที่ซ่อนอยู่ควรเปิดขึ้นเกี่ยวกับไฟล์ที่มีชื่อที่ยุ่งยาก ถ้าเป็นเช่นนั้นจะเป็นการระบุข้อบกพร่องใน Bash
ลองสิ่งนี้:
mv .[a-zA-Z0-9]* ~/whatever
ยกเว้นว่าคุณมีไฟล์จุดที่ขึ้นต้นด้วย._
หรือตัวอักษรอื่น ๆ ที่ไม่ใช่ตัวอักษรและตัวเลขมันควรจะได้รับทั้งหมด
หากคุณไม่ต้องการย้ายไดเรกทอรีสิ่งนี้จะย้ายไฟล์ทั้งหมดไปที่./foo/
:
$ find . -type f | while read n; do mv "$n" foo/; done
หากคุณต้องการทำไดเรกทอรีด้วยให้ลอง:
$ find . | grep -vP '^\.$' | while read n; do mv "$n" foo/; done
ใช้ค้นหาสิ่งที่ไม่รวม.
และ..
:
find . -name ".*" -mindepth 1 -maxdepth 1
และตรวจสอบผลลัพธ์ เพื่อย้ายไฟล์
find . -name ".*" -mindepth 1 -maxdepth 1 -exec mv {} ~/whatever \;
..name
....name