คุณจะสร้างไฟล์ด้วยชื่อว่างได้อย่างไร


9

ฉันไม่รู้ว่า แต่ฉันสร้างไฟล์ด้วยชื่อไฟล์เปล่าฉันสงสัยว่ามีช่องว่างอยู่ที่นั่น (ฉันจะอธิบายว่าทำไมในตอนท้าย):

chaouche@karabeela /mnt/ubuntu/storage $ ls
total 352K
drwx------  3 chaouche chaouche 4.0K Feb 12 11:00
drwxr-xr-x  4 chaouche chaouche 4.0K Apr 14 23:13 AUDIO
drwxr-xr-x  5 chaouche chaouche 4.0K Jul 20 22:25 BACKUPS
-rw-r--r--  1 chaouche chaouche 310K Jun 15 13:00 cv_yassine_chaouche_2012.pdf
drwxr-xr-x  2 chaouche chaouche 4.0K Jun 10 22:16 Mageia-3-i586-DVD
drwxr-xr-x  5 chaouche     1001 4.0K Oct 12  2012 MUSIQUE
drwxr-xr-x 15 chaouche chaouche 4.0K Oct 27  2012 PARISVIII
drwxr-xr-x  6 chaouche chaouche 4.0K Jun 12 18:33 SABAYON
drwxr-xr-x  5 chaouche chaouche 4.0K Jun 15 13:23 SIFTECH
drwxr-xr-x  5 chaouche chaouche 4.0K Feb  6 15:11 TOILES
drwxr-xr-x  4 chaouche chaouche 4.0K Jul 17 17:21 VIDEOS
chaouche@karabeela /mnt/ubuntu/storage $

ฉันถาม #linux เกี่ยวกับวิธีลบไฟล์และมีคนแนะนำว่าฉันย้ายไฟล์อื่นทั้งหมดออกไปจากนั้นใช้ความสมบูรณ์ของแท็บซึ่งมีพฤติกรรมที่น่าสนใจมาก:

# with tab completion
chaouche@karabeela /mnt/ubuntu/storage $ ls /
total 45M
-rwxr-xr-x  1 chaouche chaouche  34M Jan 16  2013 inkscape-0.48.4-1-win32.exe
-rwxr-xr-x  1 chaouche chaouche 8.6M Feb  4 11:42 mypaint-1.0.0-win32-installer.exe
-rwxr-xr-x  1 chaouche chaouche 2.7M Jan 17  2013 pdftkb_setup.exe

# without tab completion, wrote "/" by hand
chaouche@karabeela /mnt/ubuntu/storage $ ls /
total 212K
-rw-r--r--   1 root root    0 Apr 15  2012 1
drwxr-xr-x   2 root root 4.0K Dec  9  2012 bin
drwxr-xr-x   3 root root 4.0K Jun 15 12:10 boot
-rw-------   1 root root  74K Jul  1  2011 dead.letter
drwxr-xr-x  19 root root 4.2K Jul 20 20:14 dev
drwxr-xr-x 117 root root  12K Jul 20 21:30 etc
drwxr-xr-x   4 root root 4.0K Jun 12 18:40 home
drwxr-xr-x   2 root root 4.0K Jun  8  2011 initrd
drwxr-xr-x  20 root root  12K Dec  9  2012 lib
drwx------   2 root root  16K Jun  7  2011 lost+found
drwxr-xr-x   4 root root 4.0K Jul  3 01:56 media
drwxr-xr-x   9 root root 4.0K Apr 15 00:06 mnt
drwxr-xr-x   8 root root 4.0K Jun 30 23:19 opt
dr-xr-xr-x 198 root root    0 Jun 15 13:10 proc
drwxr-x---  28 root root 4.0K Jul 20 21:42 root
drwxr-xr-x   2 root root  12K Dec  9  2012 sbin
drwxr-xr-x   2 root root 4.0K Apr  3  2011 srv
drwxr-xr-x  12 root root    0 Jun 15 13:10 sys
-rw-r--r--   1 root root    0 Jun 12 18:40 thisismageia
drwxrwxrwt  69 root root  36K Jul 20 22:04 tmp
drwxr-xr-x  14 root root 4.0K Nov  6  2011 usr
drwxr-xr-x  18 root root 4.0K Jul  2  2011 var
chaouche@karabeela /mnt/ubuntu/storage $

หากมีช่องว่างในชื่อไฟล์มันจะถูกแทนที่ด้วย \ "" เมื่อฉันกดปุ่มแท็บ แต่ไม่ได้


5
มันเป็นไดเรกทอรีไม่ใช่ไฟล์ที่ชัดเจนว่ามีสามไฟล์
Bananguin

2
สมมติว่าคุณยังคงเก็บไดเรกทอรีที่คุณย้ายทุกอย่างออกไปยกเว้นไฟล์เปล่าจะเกิดอะไรขึ้นเมื่อทำfile *?
โจเซฟอาร์

ไม่น่าเสียดายที่ฉันได้เปลี่ยนชื่อไฟล์ด้วยคำสั่ง mv
ychaouche


2
คำถามนี้ไม่ได้ซ้ำกับคำถามนั้น  นี้เป็นคำถามเกี่ยวกับเทคนิคการปฏิบัติในการจัดการกับไฟล์ที่ตั้งใจสร้างขึ้น (หรือ directory) ที่ชื่อไม่มีตัวอักษรพิมพ์  คำถามอื่นนั้นคือการพูดคุยเชิงทฤษฎีการตั้งสมมติฐานการท่องไปในทางที่คุณอาจสร้างไฟล์ดังกล่าวหากคุณต้องการและไม่พูดอะไรเกี่ยวกับผลที่ตามมา
G-Man กล่าวว่า 'Reinstate Monica'

คำตอบ:


14

ไม่สามารถมีไฟล์ที่มีชื่อว่างได้ สิ่งที่คุณมีคือไฟล์ที่ชื่อทั้งหมดประกอบด้วยอักขระว่างหรือไม่สามารถพิมพ์ได้

LC_CTYPE=C ls -bเพื่อดูว่าสิ่งที่ชื่อไฟล์เป็นวิ่ง สิ่งนี้จะแทนที่อักขระว่างหรือที่ไม่สามารถพิมพ์ได้ทั้งหมด \342\200\213ตัวอย่างเช่นไฟล์ที่มีชื่อเป็นช่องว่างความกว้างศูนย์เดียวจะถูกระบุว่าเป็น

คุณสามารถแยกไฟล์นี้ด้วย glob ที่ไม่รวมไฟล์ที่มีชื่อดี ตัวอย่างเช่นคุณสามารถลองรายการไฟล์ที่ชื่อไม่ได้ขึ้นต้นด้วยตัวอักษร

chaouche@karabeela /mnt/ubuntu/storage $ ls -d [^A-Za-z]*

อย่าลืมตัวเลือก-dเพื่อให้lsแสดงรายการไดเรกทอรีเองและไม่ใช่เนื้อหา

คุณควรเปลี่ยนชื่อไฟล์ให้มีชื่อที่สมเหตุสมผล คุณสามารถพึ่งพาความสมบูรณ์ของเชลล์หรือใช้ glob ที่ตรงกับไฟล์นี้เท่านั้น

mv [^A-Za-z]* windows-programs

5

อาจเป็นไดเรกทอรีที่มีช่องว่างหรืออักขระที่ไม่พิมพ์ในชื่อ นอกจากนี้ยังปรากฏว่ามีเพียงหนึ่งรายการในนั้นนอกเหนือจาก '.' และ '.. ' ซึ่งเป็นสาเหตุที่คุณเห็น '3' ในคอลัมน์ที่สองของผลลัพธ์ของคำสั่งแรกของคุณ คุณก็สามารถใช้เพื่อพิมพ์ชื่อของไดเรกทอรีกับ:stat stat -f "'%N'" *ถ้ามันไม่สามารถพิมพ์ได้คุณอาจจะต้องสอดเข้าไปcat -vหรือod -cดูว่ามันคืออะไร

หากต้องการลบออกคุณอาจต้องเรียกใช้rmdir -- 'dirname'(แทนที่ 'dirname' ด้วยชื่อของไดเรกทอรีคุณอาจต้องใช้ globs หากมีชื่อที่ไม่สามารถพิมพ์ได้) แม้ว่าฉันจะบอกว่ามันมีเนื้อหาดังนั้น จะต้องลงไปในไดเรกทอรีนั้นด้วยcd -- 'dirname'และตรวจสอบเนื้อหาของมัน

ฉันขอแนะนำให้คุณหลีกเลี่ยงการใช้rm -rfค่าใช้จ่ายทั้งหมดเนื่องจากปัญหาการตั้งชื่อไดเรกทอรีนั้นง่ายต่อการทำให้เกิดความสับสน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.