2017-09-02 97 views
-1

我很新的bash腳本,我想從一個特定的目錄及其子文件夾中刪除PDF文件的所有元數據。 所以我把this script,並試圖把它放在一個循環。bash腳本刪除pdf元數據

for file in $(find . -iname '*.pdf') 
    do 
     pdftk $file dump_data | \ 
     sed -e 's/\(InfoValue:\)\s.*/\1\ /g' | \ 
     pdftk $1 update_info - output $file.tmp 

     exiftool -all:all= $file.tmp 
     exiftool -all:all $file.tmp 
     exiftool -extractEmbedded -all:all $file.tmp 
     qpdf --linearize $file.tmp $file 

     pdftk $file dump_data 
     exiftool $file 
     pdfinfo -meta $file 
done 

我得到一個錯誤,但我不明白爲什麼。

Error: No input files. Exiting. 
Errors encountered. No output created. 

無論如何,用這種方法去除不必要的信息還是有更好的方法?

電賀

+0

這可能幫助:?如何調試bash腳本(http://unix.stackexchange.com/q/ 155551/74329) – Cyrus

+0

同意。某種'set -x'來找出哪些線正在抱怨。那麼你可以自己解決這個問題。 – Mort

+0

謝謝,這是一個好tipp。一定是昨天失明瞭;-) –

回答

0

這個版本的作品如預期,雖然它不是漂亮

find -name "* *" -type d | rename 's/ /_/g' 
find -name "* *" -type f | rename 's/ /_/g' 
# Removes whitespace from directories and files 

for file in $(find . -iname '*.pdf') 
do 

    pdftk $file dump_data | \ 
    sed -e 's/\(InfoValue:\)\s.*/\1\ /g' | \ 
    pdftk $file update_info - output $file-clean 

    exiftool -all:all= $file-clean 
    exiftool -all:all $file-clean 
    exiftool -extractEmbedded -all:all $file-clean 
    qpdf --linearize $file-clean $file-clean2 

    pdftk $file-clean2 dump_data 
    exiftool $file-clean2 
    pdfinfo -meta $file-clean2 
    rm -f $file $file-clean $file-clean_original $file_original 
    mv $file-clean2 $file 

done 

echo finished