2014-09-09 2 views
0

$ 2 경로에서 $ 2 이상 수정 된 모든 파일을 인쇄하는 bash 스크립트를 작성하려고합니다. 여기 내 스크립트는 다음과 같습니다.찾기를 사용하여 결과를 찾지 못하면 오류 메시지가 출력됩니다.

find ./$1 -mtime -$2 -type f | xargs du -h | sort 

이제 스크립트에서 결과를 반환하지 않으면 "No such files found"와 같은 오류 메시지를 인쇄하려고합니다. & 파일 이름이 발견되지 않는 경우에만 어떻게 메시지를 인쇄 할 수 있습니까?

미리 감사드립니다.

+1

당신은 결과를 저장하고 확인할 수있는 컨텐츠 여부; 그렇지 않은 경우이 오류를 인쇄하십시오. 그렇다면 출력을 출력하십시오 :'[-z "$ result"] && echo "nothing found"|| echo "$ result"' – fedorqui

답변

2

당신은 사용할 수 있습니다 변수가있는 경우

#!/bin/bash 

# create a temp file 
tmp=$(mktemp) 

# run find and redirect output to temp file 
find ./"$1" -mtime -"$2" -type f > "$tmp" 

# check if temp file is not empty 
if [[ -s "$tmp" ]]; then 
    cat "$tmp" 
else 
    echo "No such files found" 
fi 

# delete temp file 
rm "$tmp" 
+0

이렇게하면 명령이 인쇄되지 않게 할 수 있습니까? –

+0

우리는 전체 출력을 지역 변수에 저장하고 실제 결과 인쇄와 'No such files found'인쇄를 확인할 수 있습니다. – anubhava

+1

파일로 저장하는 것이 더 좋지 않습니까? –