ls의 출력을 정렬하려고합니다. 내가 갈거야 순서는 이것이다 : (일부 점 파일을 포함 할 수 있음) + ls 명령의 출력 정렬
- 어떤 디렉토리
- 남아있는 모든 .files
- 남아있는 모든 .directories
- 다른 모든
모든 것이 '하위 목록'내에서 알파벳 순으로 정렬됩니다. 지금은 find 명령을 여러 번 사용하여 위의 기준을 만족하는 파일을 찾습니다. 그 I 파이프를 발견의 출력을 따르는 것은 분류 한 후 LS에 전체 분류 목록을 통과 :
이#!/bin/bash
find1=`find . -maxdepth 1 -name "_*" -type d -printf "%f\n" | sort`
find2=`find . -maxdepth 1 -name "+*" -type d -printf "%f\n" | sort`
find3=`find . -maxdepth 1 -type l -printf "%f\n" | sort`
find4=`find . -maxdepth 1 -name ".*" -type f -printf "%f\n" | sort`
find5=`find . -maxdepth 1 \(! -name "." \) -name ".*" -type d -printf "%f\n" | sort`
find6=`find . -maxdepth 1 \(! -name "_*" \) \(! -name "+*" \) \(! -name ".*" \) \(! -type l \) -printf "%f\n"`
find="$find1 $find2 $find3 $find4 $find5 $find6"
ls -dfhlF --color=auto $find
이 공백이 어떤 이름을 처리하지 않고, 전반적으로 조금 지나친 것 같다. 나는 이것을 할 수있는 더 좋은 방법이있을 것이라고 확신한다. 어떤 아이디어?
내 머리 꼭대기에서'ls' 또는'ls -l'을 제안하고 매번 원하는 파일 (또는 원하지 않는 파일)을 grepping 할 것입니다. 'grep -v'는 패턴과 일치하지 않는 파일을 출력합니다. 'ls -l'의 출력을 사용하여 디렉토리와 링크를 찾을 수 있습니다. –
'ls'의 결과를 파싱하는 것은 나쁜 생각입니다. 최악의 경우, 줄 바꿈을 포함하는 파일 이름이있을 수 있습니다.이 경우 줄 바꿈과 서식 지정을 위해 삽입하는 줄을 구별 할 수 없습니다. – chepner
@AdamLiss 좀 더 자세히 설명해 주시겠습니까? 그 파일들만 나열하고 싶을 때 ls의 결과를 grep하고 특정 패턴을 검색한다는 의미입니까? 디렉토리의 내용을 특정 순서로 나열하는 강력한 솔루션을 원했습니다. 즉, ll ($ HOME/bin에 스크립트 이름)을 입력하고 목록의 내용을 긴 목록 형식 (ls -al 종류의 것)으로 표시하지만 목록을 특정 방식으로 구성하십시오. 목록을 더 읽기 쉽게 만듭니다. –