テキストファイルが存在しない場合は、サブディレクトリ内のすべてのファイルをpdftotextする必要があります。pdftotextサブディレクトリ内のすべてのファイルがまだ存在しない場合
find . -name "*.pdf" | while read file; if [ ! -e $file.txt ] do pdftotext $file; done;
をしかし受け入れる:私が試した-bash:構文エラーを
テキストファイルが存在しない場合は、サブディレクトリ内のすべてのファイルをpdftotextする必要があります。pdftotextサブディレクトリ内のすべてのファイルがまだ存在しない場合
find . -name "*.pdf" | while read file; if [ ! -e $file.txt ] do pdftotext $file; done;
をしかし受け入れる:私が試した-bash:構文エラーを
は私が提案する「行って予期しないトークン `そば:
find . -name "*.pdf" | while IFS= read -r file; do if [ ! -e "$file.txt" ]; then pdftotext "$file"; fi; done
参照:help while
とhelp if
データをシェルにパイプしないでください。 のシェルループをfind
に実行してください。
script='
for f in "[email protected]"; do
if ! [ -e "$f" ]; then
pdftotext "$f"
fi
done
'
find . -name '*.pdf' -exec sh -c "$script" _ {} +
これはどの有効なファイル名、改行を含む一つでも動作します。 find
は、呼び出されるたびにできるだけ多くのファイルをスクリプトに渡し、すべてのファイルを処理するために必要な回数だけスクリプトを呼び出します。