2017-05-20 7 views

答えて

3

は私が提案する「行って予期しないトークン `そば:

find . -name "*.pdf" | while IFS= read -r file; do if [ ! -e "$file.txt" ]; then pdftotext "$file"; fi; done 

参照:help whilehelp if

0

データをシェルにパイプしないでください。 のシェルループをfindに実行してください。

script=' 
    for f in "[email protected]"; do 
    if ! [ -e "$f" ]; then 
     pdftotext "$f" 
    fi 
    done 
' 
find . -name '*.pdf' -exec sh -c "$script" _ {} + 

これはどの有効なファイル名、改行を含む一つでも動作します。 findは、呼び出されるたびにできるだけ多くのファイルをスクリプトに渡し、すべてのファイルを処理するために必要な回数だけスクリプトを呼び出します。