방법은 모르겠지만 빈 파일 이름으로 파일을 생성했는데 거기에 공백이 있는 것 같습니다(이유는 마지막에 설명하겠습니다).
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 $
파일명에 공백이 있으면 탭키를 눌렀을 때 \" "로 바뀌는데 그렇지 않습니다.
답변1
이름이 비어 있는 파일을 가질 수 없습니다. 당신이 가지고 있는 것은 이름이 공백이나 인쇄할 수 없는 문자로만 구성된 파일입니다.
파일 이름이 무엇인지 정확히 보려면 를 실행하십시오 LC_CTYPE=C ls -b
. 이렇게 하면 공백이나 인쇄할 수 없는 문자가 8진수 이스케이프로 대체됩니다. 예를 들어, 너비가 0인 단일 공백이 포함된 이름의 파일은 \342\200\213
.
좋은 이름을 가진 파일을 제외하는 glob을 사용하여 이 파일을 격리할 수 있습니다. 예를 들어 이름이 문자로 시작하지 않는 파일을 나열해 볼 수 있습니다.
chaouche@karabeela /mnt/ubuntu/storage $ ls -d [^A-Za-z]*
내용이 아닌 디렉토리 자체를 나열 -d
하는 옵션을 잊지 마십시오 .ls
파일 이름을 합리적인 이름으로 바꿔야 합니다. 셸의 완성 기능을 사용하거나 이 파일과만 일치하는 glob을 사용할 수 있습니다.
mv [^A-Za-z]* windows-programs
답변2
이름에 공백이나 인쇄할 수 없는 문자만 있는 디렉터리일 수 있습니다. 또한 "." 외에 항목이 하나만 있는 것 같습니다. 및 ".."이 있으므로 첫 번째 명령 출력의 두 번째 열에 "3"이 표시됩니다. 다음을 사용하여 언제든지 stat
디렉토리 이름을 인쇄 할 수 있습니다 stat -f "'%N'" *
. 인쇄되지 않으면 파이프로 연결하거나 cat -v
실제로 od -c
무엇인지 확인해야 할 수도 있습니다.
이를 제거하려면 실행해야 할 수도 있습니다 ("dirname"을 디렉토리 이름으로 바꾸십시오. 여기에 인쇄할 수 없는 이름이 포함되어 있으면 glob을 사용해야 할 수도 있습니다). 앞서 말했듯이 컨텐츠가 포함된 것처럼 보이므로 디렉토리에 들어가서 검사 rmdir -- 'dirname'
해야 할 수도 있습니다. cd -- 'dirname'
그 내용.
rm -rf
디렉토리 이름 지정 문제를 망칠 수 있으므로 어떤 희생을 치르더라도 피하는 것이 좋습니다 .