2013-04-19 2 views
0

bash는 루프 주문 :으로 출력한다나는이 같은 bash는 스크립트를했습니다

for d in /home/test/* 
    do 
    echo $d 
done 

을이 :

/home/test/newer dir 
/home/test/oldest dir 

내가 작성 시간을 기준으로 폴더를 주문하고 싶습니다되도록 ' 가장 오래된 디렉토리 '디렉토리가 목록의 맨 앞에 나타납니다. 나는 쓸모없는 ls와 나무 변화를 시도했다.

예를 들어

,

for d in `ls -d -c -1 $PWD/*` 

결과 :

/home/test/oldest 
dir 
/home/test/newer 
dir 

가 아주 가까이 있지만, 디렉토리 이름의 공간을 존중하지 않습니다. 내 질문에, 어떻게 내가 가장 오래된 디렉토리를 가지고 있고 공백을 지원합니까?

답변

1
ls -d -c $PWD/* | while read line 
    do echo "$line" 
done 
+0

기술적으로 디렉터리 이름에 줄 바꿈이있을 수 있습니다 ... – kojiro

+0

이 경우 쉘 스크립트에서 수행 할 방법이 없다고 생각합니다. – Barmar

+0

[방법이 있습니다.] (https://github.com/kojiromike/bash-sort/blob/master/sort) 실제적인 대답을하기에는 너무 학문적입니다. – kojiro

0

다른 기술은, 일종의 찌언 변환 :

stat -c $'%Z\t%n' /home/test/* | sort -n | cut -f2- | 
while IFS= read -r filename; do 
    # ... 

이 솔루션은 파일 이름을 포함 바꿈과 깨지기.