00, 01, ...로 시작하는 파일 이름이 있지만 같은 번호를 가진 파일 이름이 여러 개 있을 수 있습니다(예: 00_filename1, 00_filename2). 이름별로 정렬해서 나열하고 싶지만, 시작 번호가 같은 파일이 더 있으면 수정 날짜별로도 내림차순으로 정렬하고 싶습니다.
그래서 이것 대신에:
Oct 31 19:05 00_trash
Oct 31 19:14 00_trash_00
Oct 31 18:57 01_creating_dirs.py
Oct 31 19:05 01_trash
Oct 31 16:20 02_creating_csv.py
Oct 31 19:22 02_renaming_files.sh
Oct 31 16:20 03_creating_db.py
Oct 31 19:06 03_trash
Oct 31 16:21 04_importing_csv_to_db.py
Oct 31 16:20 05_some_xl.py
Oct 31 16:22 06_regex.py
나는 다음과 같이 정렬하고 싶다 :
Oct 31 19:14 00_trash_00
Oct 31 19:05 00_trash
Oct 31 19:05 01_trash
Oct 31 18:57 01_creating_dirs.py
Oct 31 19:22 02_renaming_files.sh
Oct 31 16:20 02_creating_csv.py
Oct 31 19:06 03_trash
Oct 31 16:20 03_creating_db.py
Oct 31 16:21 04_importing_csv_to_db.py
Oct 31 16:20 05_some_xl.py
Oct 31 16:22 06_regex.py
ls
(매개변수 -t
및 사용 -r
)과 sort
(매개변수 사용 -kn,m
- n,m
열 범위 지정 - 및 )을 결합하려고 시도했지만 -r
몇 시간 동안 검색하고 시도한 후에도 성공하지 못했습니다.
답변1
GNU 유틸리티를 사용하여,
ls -1t | sort -nst '_' -k 1,1
ls -1t
수정 시간별로 정렬하여 한 줄에 한 파일씩 출력합니다.sort
:-n
: 숫자 정렬을 수행하고,-t '_'
: 필드 구분자로 밑줄을 사용합니다.-k 1,1
: 첫 번째 필드를 정렬합니다(예: 첫 번째 밑줄 앞의 두 자리).-s
: 안정적인 정렬을 수행합니다. 즉, 두 행의 첫 번째 필드가 동일한 경우 다음 필드를 사용하여 정렬하지 않습니다.
긴 목록 형식 출력을 선호하는 경우
ls -lt | sort -nsk 9.2
키 의 의미 9.2
는 9번째 필드의 처음 두 문자만 정렬한다는 것입니다.
나는 이것이 단지 시각화를 위한 것이라고 가정하고 있습니다.분석하다ls
심각한 스크립트의 일부가 되어서는 안 됩니다.