2013-09-10 2 views
1

나는 현재 연습 문제를 통해 일하고있어 어떤 디렉토리에서 파일을 찾아 그것을 이동 쉘 스크립트를 만들어야합니다.유닉스 - 쉘 스크립트는 어떤 디렉토리에서 파일을 찾아 그것을 이동

파일이 모든 디렉토리에있을 수 있기 때문에 어려움을 겪고 있지만 (찾기에는 경로가 없습니다.) mv 명령을 사용하여 다음 단계로 이동하려면 -print 플래그와 함께 find 옵션을 사용했습니다.

지금까지 내 코드는 변수를 읽고, 파일이 입력되었는지, 파일인지 디렉토리인지 또는 존재하는지 여부를 감지합니다.

위에서 언급 한 다음 단계는 파일을 찾은 다음 "테스트"파일로 이동하는 것입니다.

누구든지 추천 사항이 있으면 크게 감사하겠습니다.

#!/bin/bash 

bin="deleted" 

if [ ! -e bin ] ; then 
    mkdir $bin 
fi 

file=$1 

#error to display that no file has been entered 
if [[ ! $file ]]; then 
    echo "no file has been entered" 
fi 

#file does not exist, display error message 
if [[ ! -f $file ]]; then 
    echo "$file does not exsist!" 
fi 

#check to see if the input is a directory 
if [[ -d $file ]]; then 
    echo "$file is a directory!" 

if [[ -e $file ]]; then *** move to test folder 
****This is where I am having the problems 

답변

3

find/-type f -name FILENAME | xargs -I foobar echo mv foobar /tmp-I foobarmv foobar /tmp에 교체하는 것이 의미

하는 것으로 (난 그냥 명령을 사용해 단지 실수로 파일 이동에서 자신을 저장 거기에 넣어 .. 명령이 실제로 작동하도록 echo 제거) 파일의 전체 경로가있는 foobar 문자열.

예를 들어, 시도 : 그래서 내 마지막 find/-type f -name FILENAME | xargs -I foobar foobar is a cool file

+0

을 문의 경우/수 : 경우 [[-e $ 파일]]; 그런 다음/-name FILENAME | xargs mv 테스트? – user2141414

+0

아마도'-not -wholename '/ tmp/*''또는'/ path/to/test_dir/*'와 같은 옵션을 추가해야합니다. – konsolebox

+0

@ user2141414 다음과 같아야합니다 :'find/-name FILENAME | xargs -I foobar mv foobar/tmp' ... 조심하세요! – necromancer