에 작은 파일의 이름을 찾을 수는 디렉토리유닉스
이 작업을 수행 할 수있는 권리 명령은 무엇입니까에서 4 번째로 작은 (숨겨지지 않은) 파일의 이름을 찾을 수 있다고 가정? 내가 ls -l
, head
, tail
, line
및 awk '{print}'
진술만을 알고있는 사람이라고 가정 해 보겠습니다. man ls
에서
에 작은 파일의 이름을 찾을 수는 디렉토리유닉스
이 작업을 수행 할 수있는 권리 명령은 무엇입니까에서 4 번째로 작은 (숨겨지지 않은) 파일의 이름을 찾을 수 있다고 가정? 내가 ls -l
, head
, tail
, line
및 awk '{print}'
진술만을 알고있는 사람이라고 가정 해 보겠습니다. man ls
에서
: 크기의 내림차순으로 출력을 정렬 -S
, -r
는
그래서 내 솔루션이 대안으로
ls -rS | sed -n '4p'
또는
ls -rS | awk 'NR==4'
구문 분석과 같을 것이다 출력의 순서를 반전 ls
은 not safe이므로 이상하고 c를 처리하기가 어렵고 오류가 발생하기 쉽습니다. 파일 이름에 공백과 개행 문자 같은 haracters.
null-terminated 줄 끝을 사용하기 때문에보다 강력한 다음 접근 방법을 사용하는 것이 좋습니다.
count=0
while IFS= read -r -d '' line; do
((++count == 4)) && echo "${line#* }" && break
done < <(find . -type f -maxdepth 1 -printf '%s %p\0' | sort -zn)
'ls '를 파싱하는 것이 안전하지 않은 경우는 없습니다. 파일 이름에 공백, 개행 문자 및 제어 문자를 사용하는 것은 나쁜 결정입니다. –
'find -print0'을 사용하지 않는 이유는 무엇입니까? –
@larGray 같은'find' 명령에서'printf'와'print0'을 사용하면 파일이 두 번 출력됩니다. – dogbane
그래서 예를 들어 4 번째로 큰 파일을 찾아야한다면 어떻게해야할까요? 덕분에 – luc
@luc 그냥'-r'을 버리십시오. –