.tar.gz
다음 명령을 사용하여 모든 파일을 나열하려고합니다 .
ls *.tar.gz -l
...다음 목록이 표시됩니다.
-rw-rw-r-- 1 osm osm 949 Nov 27 16:17 file1.tar.gz
-rw-rw-r-- 1 osm osm 949 Nov 27 16:17 file2.tar.gz
그러나 다음과 같이 나열하면 됩니다.
file1.tar.gz
file2.tar.gz
그리고 둘 다:
file1.tar.gz file2.tar.gz
이것이 어떻게 "올바르게" 수행됩니까?
답변1
이 -1
옵션(소문자 "L"이 아닌 숫자 "one")은 다른 정보 없이 한 줄에 하나의 파일을 나열합니다.
ls -1 -- *.tar.gz
답변2
파일 이름만 원하면 다음을 사용할 수 있습니다 printf
.
printf '%s\n' *.tar.gz
... 쉘은 *.tar.gz
와일드카드 문자를 파일 이름으로 확장하고 printf
인쇄하며, 각 문자 뒤에 개행 문자가 옵니다. 이 출력은 약간 다릅니다.하나ls
줄 바꿈이 포함된 파일 이름의 경우:
설정
$ touch file{1,2}.tar.gz
$ touch file$'\n'3.tar.gz
엘에스
$ ls -1 -- *.tar.gz
file1.tar.gz
file2.tar.gz
file?3.tar.gz
인쇄 기능
$ printf '%s\n' *.tar.gz
file1.tar.gz
file2.tar.gz
file
3.tar.gz
답변3
ls
출력이 파이프될 때 동작이 다릅니다. 예를 들어:
ls # outputs filenames in columns
ls | cat # passes one filename per line to the cat command
따라서 모든 파일(한 줄에 하나씩)을 보려면 *.tar.gz
다음을 수행하십시오.
ls *.tar.gz | cat
하지만 만약 당신이아니요출력을 파이프하고 싶습니까? 즉, ls
파일 이름을 파이핑하지 않고 강제로 한 줄로 출력하는 방법이 있습니까 ?
예, -1
스위치가 있습니다. (이것은 숫자 1이 포함된 대시입니다.) 따라서 다음을 사용할 수 있습니다.
ls -1 # shows all (non-hidden) files, one per line
ls -1 *.tar.gz # shows only *.tar.gz files, one per line
답변4
약간 우회하는 길미친방법:
for i in *.tar.gz; do
echo "$i"
done
편집: 이상한 파일 이름을 처리하기 위해 따옴표를 추가했습니다.