저는 루트 폴더에 있고 이 폴더에서 마지막으로 수정된 파일 10개를 찾아야 합니다. 강사가 말한 대로 -mtime을 입력할 때마다 10일이 주어집니다. 지난 10일 분량이 아닌 최근 10개의 수정된 파일이 필요합니다. 나는 내 시간 찾기를 시도했습니다. 내 시간은 꼬리로 연결되었습니다. 지난 10일 동안 수정된 모든 파일의 긴 목록을 얻습니다. 루트 디렉터리의 마지막 10개 수정 파일만 필요합니다.
답변1
ls -t | head
파일 이름에 개행 문자가 포함되지 않는 한 작동합니다.
ls -t
최신 파일부터 시간별로 정렬합니다. head
상위 10개 라인만 유지합니다.
더 자세한 내용을 원하면 를 사용할 수 있지만 ls -lt
전체 크기 앞에 추가 줄이 추가되므로 가 필요합니다 ls -lt | head -n 11
.
숨겨진 파일을 포함하려면 를 사용할 수 있습니다 ls -At | head
. ( ls -A
또는 --almost-all
GNU ls의 경우 .
및를 제외한 숨겨진 파일이 포함됩니다 ..
.)
이는 일반 파일뿐만 아니라 디렉터리를 포함하여 모든 유형의 최신 10개 파일을 제공합니다.
답변2
에서 zsh
현재 작업 디렉토리 또는 그 이하의 가장 최근에 마지막으로 수정된 10개의 일반 파일에 대해 다음을 수행합니다.
ls -ldt -- **/*(D.om[1,10])
다른 쉘에서는 최근 GNU 시스템을 사용한다고 가정합니다.
find . -type f -printf '%T@:%P\0' |
LC_ALL=C sort -zrn |
LC_ALL=C sed -z 's/^[^:]*://;10q' |
xargs -r0 ls -ltd --
하위 디렉터리의 파일을 고려하지 않으려면 **/
in 을 제거 zsh
하거나 after -maxdepth 1
에 추가하세요 .find
.
숨겨진 파일을 제외하려면 D
에서 glob 한정자를 제거 zsh
하거나 행 find
을 다음으로 변경합니다.
LC_ALL=C find . -name '.?*' -prune -o -type f -printf '%T@:%P\0' |
또는 하위 디렉터리의 파일도 제외하는 경우:
LC_ALL=C find . -maxdepth 1 ! -name '.*' -type f -printf '%T@:%P\0' |
이는 파일 경로에 어떤 문자 또는 비문자가 포함될 수 있는지에 대해 가정하지 않습니다.