: 프로그램은 다음과 같습니다
: 한번 보시면 어떤 기능을 하는지 아실거 같습니다
:
: #
: # version 0.1
:
: if ($#argv != 2) then
: echo "usage : lfind -[ld] filename"
: exit 1
: endif
:
: set opt = $argv[1]
: set filename = $argv[2]
: set find = `(find / -name $filename -print > /dev/tty) >& /dev/null`
: set del = `(find / -name $filename -exec rm "{}" ;) >& /dev/null`
:
: if ($opt == '-l') then
: echo $find
: else if ($opt == '-d') then
: echo $del
: endif
:
: 문제는 이 스크립트를 예를 들어
:
: ./lfind -l test 라고 하면 잘 찾습니다.
:
: 그런데
:
: ./lfind -d test 라고 하면 test 라는 파일을 찾아서 지워야 하는데
: 똑 같이 파일 찾기를 합니다
: 다시 말해
: echo $del 이 실행되어야 하는데
: echo $find 가 실행이 됩니다
: 어디가 잘못된거죠?
: 여러분도 한번 해보세요..
: 글고 저좀 갈켜주세요..
: 부탁합니다...
뭔가 의미심장한 스크립트임.
어떤 파일을 찾으려고만해도
찾으려는 파일을 지울 수 밖에 없는 스크립트.
절대 루트로 위의 스크립트를 실행시키지 말것.
원하는 작업을 위해 다음과 같이 해볼것.
#!/bin/csh
#----------------------------------------------------------------
if ($#argv != 2) then
print_help:
echo "usage : lfind -[ld] filename"
exit 1
endif
set opt = $argv[1]
set fn = $argv[2]
switch ($opt)
case -[lL]:
echo "find and list... $fn"
(find . -name $fn -print > /dev/tty) >& /dev/null
breaksw
case -[dD]:
echo "find and remove... $fn"
find . -name $fn -exec /bin/rm -i "{}" ;
breaksw
default:
echo "invalid option"
goto print_help
breaksw
endsw
#-----------------------------------------------------------------
find뒤의 /를 .로 수정하였음.
원하면 .을 /로 수정가능함.
--
외로워라 이네몸은 뉘와함께 놀아날꼬.