파일 목록을 파일 이름과 수정 날짜별로 정렬하는 방법은 무엇입니까?

파일 목록을 파일 이름과 수정 날짜별로 정렬하는 방법은 무엇입니까?

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심각한 스크립트의 일부가 되어서는 안 됩니다.

관련 정보