때로는 다음과 같이 여러 이름과 각 이름 사이의 공백으로 파일 이름이 만들어지는 경우가 있습니다.
$ touch "A B C"
$ ls
A B C <-- one file but has three words !
file1
file2
file3
실제로 여러 이름으로 생성된 "ABC" 파일을 무시(필터링)하려면 어떻게 해야 합니까?
예상 출력
$ ls <filter>
file1
file2
file3
답변1
다음을 수행하는 경우:
ls | grep -F -v ' '
이름에 공백이 포함된 파일은 표시되지 않습니다.
(예제에서는 대신 사용했지만 fgrep
Hauke Laging이 지적했듯이grep -F
더 이상 사용되지 않음)
답변2
GNU ls 사용(즉, 임베디드 Linux가 아닌 경우):
ls -I '* *'
이름에 공백이 있는 파일을 건너뛸 이유가 많지 않습니다. file_names=$(ls)
스크립트에 또는 같은 것이 있어서 이 작업을 수행하는 경우for f in $(ls)
ls의 출력을 구문 분석하지 마십시오., 문제가 사라질 수 있습니다.
답변3
KSH의 확장된 glob을 사용하면 glob 확장자에서 파일 이름을 필터링할 수 있습니다.
ls -d -- !(A B C)
답변4
아마도 이것도 도움이 될 것입니다:
ls -l --quoting-style=literal:
-rw-r--r-- 1 hl hauke 0 28. Apr 16:55 A B C
ls -l --quoting-style=locale:
-rw-r--r-- 1 hl hauke 0 28. Apr 16:55 „A B C“
ls -l --quoting-style=shell:
-rw-r--r-- 1 hl hauke 0 28. Apr 16:55 'A B C'
ls -l --quoting-style=shell-always:
-rw-r--r-- 1 hl hauke 0 28. Apr 16:55 'A B C'
ls -l --quoting-style=c:
-rw-r--r-- 1 hl hauke 0 28. Apr 16:55 "A B C"
ls -l --quoting-style=escape:
-rw-r--r-- 1 hl hauke 0 28. Apr 16:55 A\ B\ C