문제

디렉토리의 여러 파일을 리버스 알파벳 순서로 1 초 지연으로 터치해야합니다. 이 파일에는 이름에 공간이 있습니다. 나는 이것을 시도했다 :
ls | sort -r | tr '\012' '\000' | xargs -0 touch

이:

#!/bin/bash

for i in $(ls -r); 
do
    touch "$i"
    sleep 1
done

그러나 첫 번째는 너무 빨리 만들고 원하는 것을 얻지 못하며 (내 장치에서 순서대로 파일에 나타나도록), 두 번째는 공백을 올바르게 처리하지 않습니다.

어떤 아이디어?

편집 : 죄송합니다. 가능한 한 더 빨리이 작업을 수행하는 것이 좋을 것이라고 덧붙였습니다. '파일 사이에서 1 초를 기다려야한다면 60 개 이상의 파일이 있으면 1 분 이상 기다리고 싶지 않습니다. . 문제를 일으켜서 미안 해요.

도움이 되었습니까?

해결책 3

마침내 나는 이것을 사용했다 :

#!/bin/bash
(OFFSET_IN_SEC=0
IFS=$'\n'
# for each file in reverse alphabetic order
for file in $(ls -r); do
   # offset in seconds from current time                               
   OFFSET_IN_SEC=$(( $OFFSET_IN_SEC + 1 ))

   # current time + $OFFSET_IN_SEC in format used by touch command
   TOUCH_TIMESTAMP=$(date -d "$OFFSET_IN_SEC sec" +%m%d%H%M.%S)

   # touch me :)
   # NOTE: quotes around $file are for handling spaces
   touch -t $TOUCH_TIMESTAMP "$file"
done)

$ 파일 주위의 인용문이 공백을 잘 처리하지 않으므로 IFS 설정을 포함시켜야했습니다.

감사합니다 !!!

다른 팁

read 한 번에 한 줄로 읽습니다.

ls -r | while read FILE; do
    touch "$FILE"
    sleep 1
done

또는, 당신은 주위를 엉망으로 만들 수 있습니다 $IFS newlines만이에서 분리되도록 변수 for i in list 공백이나 탭이 아닌 구문 :

(IFS=$'\n'
for FILE in $(ls -r); do
    touch "$FILE"
    sleep 1
done)

(괄호가 추가되었습니다 $IFS 나중에 복원됩니다. 당신이 잊어 버리면 비표준 가치로 설정하면 바나나가 될 것입니다.)

그건 그렇고, 당신은 또한 사용하여 수면을 건너 뛸 수 있습니다. touch -t 특정 타임 스탬프를 설정합니다. 그래도 그렇게하기가 더 어려워 보이므로 더 모험적인 응답자에게 맡길 것입니다. :-)

또 다른 배쉬 솔루션 :

#!/bin/bash
OFFSET_IN_SEC=0

# for each file in reverse alphabetic order
for file in (ls -r); do
   # offset in seconds from current time                               
   OFFSET_IN_SEC=$(( $OFFSET_IN_SEC + 1 ))

   # current time + $OFFSET_IN_SEC in format used by touch command
   TOUCH_TIMESTAMP=$(date -d "$OFFSET_IN_SEC sec" +%m%d%H%M.%S)

   # touch me :)
   # NOTE: quotes around $file are for handling spaces
   touch -t $TOUCH_TIMESTAMP "$file"
done

이것은 나를 위해 작동합니다 :

while read ; do
    [ -d "$REPLY" ] || touch "$REPLY"
    sleep 1
done < <( find . -maxdepth 1  | sort -r )
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top