h1

Recursive touch script

May 5, 2008

touch는 recursive 하게 실행되지 않아서 불편한 경우가 있습니다.
아래 shell script를 Rtouch.sh 라고 저장하고(물론 줄 번호는 제외 - vi에서 간단하게 제거할 수 있죠)
Rtouch.sh directory
라고 실행하면 directory 내에 있는 subdirectory와 file들을 touch 해줍니다.
15번째 줄의 find와 xargs를 이용하면 touch 뿐 아니라 다른 작업도 응용해서 할 수 있습니다.

01: #!/bin/sh
02: # Recursive Touch: touch files in a directory recursively
03: #
04: if [ $# -lt 1 ]
05: then
06:   echo "  Recursive Touch: touch files in a directory\
         recursively"
07:   echo "  Usage:"
08:   echo "          $0 [directory]"
09:   echo "  Required parameter:"
10:   echo "          directory name"
11:   exit 1
12: fi
13:
14: echo "touching $1"
15: find $1 -print0 | xargs -r0 touch
16: echo "files in $1 touched!"

xargs를 알기 전, 예전에는 다음과 같은 script를 만들어서 썼었죠.

01: #!/bin/sh
02: # touch files in a directory recursively03: #
04: cd directory
05: find > tmp11
06: sed 's#\(.*\)#touch\ \1#' < tmp11 > tmp22
07: sh tmp22
08: rm tmp11 tmp22
09: echo 'directory touched!'

Leave a Comment