2014-05-15 1 views
0

내가문 중 하나를 변경 한 파일 이름을 인쇄하거나

a.txt 
    a.txt.md5 
    b.txt 
    b.txt.md5 
    c.txt 

처럼 내 디렉토리에있는 일부 파일이 있고 난의 파일의 이름을 인쇄하는 쉘 스크립트를 작성하는 것을 시도하고 새로운하는 경우 MD5는 전혀 존재하지 않거나 MD5는 어떻게이 조건이 같을 것입니다 경우

for filename in ".txt" 
do 
    if($filename.md5 not present OR $filename.md5 is changed) 
    echo $filename 
    fi 
done 

처럼

을 변경? 파일이 존재하는 경우

if($filename.md5 not present OR $filename.md5 is changed) 
+0

어떤 플랫폼을 사용하고 계십니까? –

+0

@ Mark Setchell 데비안 7 – Terence

답변

1
: 당신은 아마도 내가 더 나은 의사 코드를 추가 검사를

을 확인하기 위해 무엇 이건 그냥 추출하고

if [ -e $file ]; then 
    #checksum again 
    if [ $? == 0 ];then 
     echo $file 
    fi 
else 
    echo $file 
fi 

단일 if 문 입력하기 :

is_changed 
if [ !-e $file -o $? == 0 ];then 
    print $file 
fi 

함수 is_changed가 변경되면 0을 반환하고 그렇지 않으면 다른 것을 반환한다고 가정합니다.

+0

답변을 주셔서 감사합니다. – Terence

+0

은 is_changed를 도와주세요. – Terence

+0

$ is_changed = md5sum -c $ filename.md5 0 1 – Terence

1

테스트는 간단하다

if file exists 
    checksum 
    if changed 
     print filename 
else 
     print filename 
+0

@Tiago에 대한 감사의 말 – Terence

+0

위의 두 가지 조건을 모두 쓸 수 있습니다. 실용적인 경우에는 긴 코드를 인쇄 파일 이름에 사용하므로 코드가 반복 될 것입니다. 그래도 여전히 – Terence

+0

예, 할 수 있지만 이전에 파일이 변경되었는지 확인해야합니다. – Tiago

관련 문제