and를 사용해야 ls > filelist
하는데 사용하면 "cat filelist"
이름 중 하나로 모든 항목이 표시되지만 변경해야 합니다. 파일 목록만으로 이 작업을 수행하는 방법을 잘 모르겠습니다(해당되는 경우).filelist
filelist
"* * * File List * * *"
filelist
답변1
ls > /tmp/filelist
echo "* * * File List * * *"
cat /tmp/filelist
나열된 항목이 없다고 가정 /tmp
하면 다음 /tmp
으로 변경하십시오./var/tmp
답변2
넌 할 수있어:
ls | grep -vx filelist > filelist
이 -v
옵션을 사용하면 출력에서 일치하는 행을 제외하고 -x
전체 행과 일치하게 됩니다(따라서 건너뛰지 않습니다 otherfilelist
).
답변3
Unix 명령은 매우 간결하며 무작위 파이프라인에서 더 쉽게 사용할 수 있도록 머리글/바닥글 또는 관련 없는 세부 정보로 출력을 장식하지 않습니다. 이와 같은 것을 추가하는 것은 매우 간단합니다.
(echo '* * * This is a header * * *'; ls ; echo --* footer *--) > filelist
답변4
더 깊은 이해를 위해 전체 명령을 세 부분으로 쉽게 나눌 수 있습니다.
에코"파일 목록"; echo는 STDIN(표준 입력)에 출력을 인쇄합니다(다른 곳에 파이프하지 않는 경우).
LS | grep -vx file list; 현재 디렉터리의 내용을 나열하고 출력을 grep으로 파이프합니다. 일반적으로 우리의 경우 "grep"은 주어진 키워드("filelist")가 포함된 행만 인쇄합니다. -v 옵션을 사용하면 키워드가 포함되지 않은 행을 찾습니다. Barmar가 언급했듯이 "myfilelist", "filelist2" 등과 같은 "filelist"가 포함된 파일도 제외하므로 -x를 사용하는 것이 좋습니다.
filelist 출력을 "filelist" 파일로 리디렉션합니다. (1)과 (2)는 괄호로 묶이고 세미콜론으로 구분되므로 두 명령의 출력(STDIN에 인쇄됨)이 이 파일로 리디렉션됩니다.