수정 날짜가 가장 오래된 파일부터 시작하여 수정 날짜가 가장 최근인 파일로 끝나는 디렉터리의 모든 파일에 대해 명령을 실행하려고 합니다.
*
다음과 같이 디렉터리의 모든 파일에 대해 명령을 실행하는 데 별표( )가 유용하다고 생각합니다 .
$ stat -x *
그러나 파일을 알파벳순으로 정렬하려면 동일한 기능을 달성하면서 수정 날짜가 가장 오래된 파일부터 시작하는 방법이 있습니까?
편집: 인간의 의미에서 "가장 이른", 가장 오래된 문서를 의미합니다.
답변1
GNU 도구를 사용한다고 가정하면 다음과 같은 작업을 수행해야 합니다.
find . -maxdepth 1 -name '*ASD*' -printf '%T@\t%p\0' |
sort -z -k1.1n |
while IFS=$'\t' read -rd '' mtime name; do
# do something with the filename
echo ">>>$name"
done
줄 바꿈을 포함하는 이름과 같이 가능한 파일 이름을 처리하는 데 추가 후프가 사용됩니다.
이것을 함수로 캡슐화하려면 다음과 같이 작성합니다.
files_by_mtime () {
local pattern=$1
local -n arr=$2
arr=()
while IFS=$'\t' read -rd '' mtime name; do
arr+=("$name")
done < <(
find . -maxdepth 1 -name "$pattern" -printf '%T@\t%p\0' | sort -z -k1.1n
)
}
files_by_mtime '*' myarr
for file in "${myarr[@]}"; do
# do something with the filename
echo ">>>$file"
done
필수 bash 버전 4.3+
답변2
ls -tr
현재 디렉토리의 파일은 가장 오래된 수정 시간을 기준으로 정렬됩니다.