ls 출력에서 ​​출력 파일을 제외하는 방법

ls 출력에서 ​​출력 파일을 제외하는 방법

내 데스크탑에 다음 파일이 있다고 가정해 보겠습니다.

aaa.jpg  
bbb.jpg   

이 두 개의 jpg를 나열하고 .txt 파일로 출력하고 싶습니다.

#!/bin/bash
cd ~/Desktop
ls -1 > all.txt

이 코드를 사용하면 all.txt다음과 같은 결과를 얻을 수 있습니다.

aaa.jpg  
bbb.jpg  
all.txt

나는 단지 이 두 개의 jpg를 원합니다 all.txt.

답변1

.jpg 파일에만 ls 필터를 사용할 수 있습니다.

ls *.jpg > all.txt

답변2

답장을 보내주셔서 감사합니다. 하지만 .jpg뿐만 아니라 모든 것을 나열하고 싶었습니다. 간단한 해결책이 있다는 것을 깨달았습니다

ls * > all.txt

바꾸다

ls > all.txt

와일드카드를 추가하면 출력 파일이 자체적으로 포함되지 않는 이유를 아는 사람이 있습니까?

답변3

@ShayneManning이 제안한 것보다 더 일반적인 솔루션은 다음과 같습니다.

ls | grep -v '^all.txt$' > all.txt

grep내용별로 행을 필터링하는 데 사용됩니다. 이 옵션은 -v필터를 반전시킵니다. 따라서 all.txt의 출력에서 ​​제외됩니다 ls. 다른 모든 이름은 에 인쇄됩니다 all.txt.

관련 정보