ls는 특정 파일에서 시작됩니다.

ls는 특정 파일에서 시작됩니다.

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)

  1. 또는 더 간단하게 사용 하고 마지막 파일 이름으로 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'

관련 정보