ls에서 특정 파일을 제외 출력에서 ​​특정

ls를 실행하고 출력에서 ​​특정 파일을 제외하고 싶습니다.

다음 명령을 실행하면 모든 파일을 한 줄에 하나씩 얻습니다.

$ ls -1
file1
file2
file3
temp

이 명령을 보여주는 방식으로 실행하고 싶습니다.

$ ls -1 <insert magic here> temp
file1
file2
file3



답변

ls -I <filename>

-I = 파일 이름을 무시합니다. 즉, 지정된 파일을 나열하지 않습니다.

둘 이상의 파일을 무시하려면 각 파일 이름 앞에 -I 를 추가하십시오 .

ls -I file1 -I file2

예를 들어 이름 확장자로 파일을 무시하려면 다음을 수행하십시오.

ls -I "*.jpg" -I "*.svg"


답변

-I를 한 번 사용하면 작동하지만 두 번 사용하면 작동하지 않습니다. 예 :
ls -I *.csv작동합니다.

그러나
ls -I *.csv -I *.txt작동하지 않고 대신 txt 파일을 반환합니다.

나를 위해 속임수를 무시했습니다 . 이것이 내가 필요하고 일한 것입니다.

ls -lhrt --ignore="*.gz" --ignore="*.1"

이전 백업 로그를 제외하는 로그 폴더의 파일이 표시됩니다.


답변

ls --ignore={"*.jpg","*.png","*.svg"}


답변

나는 이것이 당신이 찾고있는 출력을 생성한다고 생각합니다 :

ls -1 !(temp)

분명히 , 당신은 필요 shopt -s extglob가 작동하려면
(나는 그것이 활성화, 그래서 먼 과거의 어느 시간에 내가 유용하다고하고 활성화 추측).

grep을 사용하여 출력을 필터링 할 수도 있다고 생각합니다.

ls -1 | grep -v '^temp$'

파이프와 필터를 사용하면 훨씬 더 많은 유연성과 다른 명령 / 상황으로 전환 할 수있는 기술을 제공하지만이 경우에는 관심이 없을 수도 있습니다.


답변