셸 스크립트: 다른 디렉터리의 파일 이름과 일치하는 한 디렉터리의 파일을 삭제하거나 이동합니다.

셸 스크립트: 다른 디렉터리의 파일 이름과 일치하는 한 디렉터리의 파일을 삭제하거나 이동합니다.

해결해야 할 매우 구체적이고 이상한 문제가 있습니다. 저는 연구 조교로 많은 데이터를 생산해왔습니다. 한 디렉토리에는 일반 보기용으로 .png를 덤프했고(여기서는 공간이 제한되어 있음) 다른 디렉토리에 Latex에서 사용하기 위해 .ps 및 .pdf 파일을 덤프했습니다. 이 모든 작업은 matlab을 사용하여 자동으로 수행됩니다. .png 폴더에서 쓸모없다고 생각되는 파일들을 주기적으로 많이 삭제했는데, 또 다른 파일이 어수선하게 쌓여 있었습니다.

Unix에게 .ps 디렉터리를 반복하고 각 파일에 대해 .png 디렉터리에서 일치하는 파일 이름을 검색한 다음 일치하지 않으면 나중에 파일을 다른 디렉터리(가장 자주 수행함)로 이동하도록 지시하는 방법은 무엇입니까? 삭제)?

여기에 유용한 명령이 있습니까?

답변1

이를 수행하는 대략적인 방법은 다음과 같습니다.

for f in /path/to/PDFs/*.pdf; do
    base=$( basename "$f" .pdf )
    if [ ! -f /path/to/PNGs/"$base".png ]; then
        mv "$f" /path/to/garbage/
    fi  
done

관련 정보