저는 루트 폴더에 있고 해당 폴더에서 마지막으로 수정된 파일 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 --
하위 디렉터리의 파일을 고려하지 않으려면 **/
에서 제거하거나 뒤에 zsh
추가 하세요 .-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' |
이는 파일 경로에 포함될 수 있는 문자 또는 비문자에 대해 가정하지 않습니다.