pdftotext 子目录中的所有文件(如果尚不存在)
pdftotext all files in subdirectories if it doesn't already exist
如果文本文件不存在,我需要对子目录中的所有文件进行 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
不要将数据传输到 shell;从 find
.
执行一个 shell 循环
script='
for f in "$@"; do
if ! [ -e "$f" ]; then
pdftotext "$f"
fi
done
'
find . -name '*.pdf' -exec sh -c "$script" _ {} +
这将适用于任何 有效文件名,即使是包含换行符的文件名。 find
每次调用脚本时都会将尽可能多的文件传递给脚本,并根据需要多次调用脚本来处理所有文件。
如果文本文件不存在,我需要对子目录中的所有文件进行 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
不要将数据传输到 shell;从 find
.
script='
for f in "$@"; do
if ! [ -e "$f" ]; then
pdftotext "$f"
fi
done
'
find . -name '*.pdf' -exec sh -c "$script" _ {} +
这将适用于任何 有效文件名,即使是包含换行符的文件名。 find
每次调用脚本时都会将尽可能多的文件传递给脚本,并根据需要多次调用脚本来处理所有文件。