ls
특정 파일 이름으로 시작하는 디렉토리에 파일을 저장하는 방법은 무엇입니까 ?
예를 들어, 내 CWD에 다음 파일이 있는 경우:
$ ls -1
alpha.mp3
bar.xls
file1.txt
file2.txt
foo.odt
testing3.txt
"file2.txt"로 시작하는 파일을 인쇄하는 방법:
file2.txt
foo.odt
testing3.txt
또는 "foo.odt"에서:
foo.odt
testing3.txt
?
답변1
zsh
쉘로 사용하는 경우 이것을 사용할 수 있습니다글로벌 예선선택한 파일 앞에 사전순으로 포함되지 않은 파일 이름 만 선택합니다 . 1 .
전임자. 주어진
% ls -1
alpha.mp3
bar.xls
file1.txt
file2.txt
foo.odt
testing3.txt
그런 다음 도우미 함수를 정의하십시오.
% nt() { ! [[ $NTREF > $REPLY ]] }
~ 후에
% NTREF=file2.txt; ls -1 -- *(+nt)
file2.txt
foo.odt
testing3.txt
% NTREF=foo.odt; ls -1 -- *(+nt)
foo.odt
testing3.txt
정규화된 glob을 직접 사용하여 목록을 중지 명령에 전달할 수 있습니다.
% NTREF=foo.odt
% yourcommand -- *(+nt)
- 또는 더 간단하게 사용 하고 마지막 파일 이름으로
nt() { [[ $REPLY > $NTREF ]] }
설정하세요 .NTREF
예전에는성공적으로 처리되었습니다
답변2
파일 목록을 반복하는 동안 중단된 프로세스를 재개하려면 파일 목록을 다시 생성하고 다시 시작할 파일을 찾을 때까지 삭제할 수 있습니다.
set -- *
# see the "before" situation
printf '%s\n' "$@"
while [ "$1" != "file2.txt" ]
do
shift
done
# check the results
printf '%s\n' "$@"
그런 다음 다음 파일 목록을 사용하여 프로세스를 실행할 수 있습니다.
$ your-process "$@"
위의 내용은 인터럽트 프로세스에 "자연스러운" 확장 순서로 파일 목록이 제공된다고 가정합니다. ls
이는 파일 목록을 지정하지 않을 경우 수행되는 작업입니다.
답변3
이것은후처리솔루션, 사용 sed
또는 awk
:
ls -1 | sed -n '/'"$filename"'/,$p'
또는
ls -1 | awk '/'"$filename"'/,EOF'
그 중에는 예를 들면
filename='file2.txt'