在目录中,我有一堆文件,如file1.tex,file1.pdf,file2.tex,file2.pdf等以及其他文件。我想要,最好是bash中的一个衬垫(包含在make文件中作为依赖)到
编辑
我曾尝试过
find . \( -name '*.pdf' -name '*.tex' \)
但它不起作用。我想如果我想通过在两个名称开关之间使用-o选项来查找具有pdf 或 tex扩展名的文件,则上述方法很有用。 感谢
苏雷什
答案 0 :(得分:4)
这不是非常易读 - 用一些不错的换行来制作这个脚本或shell函数要好得多 - 但如果你真的想要,你可以强制循环成为一个单行。< / p>
# List TeX files with matching PDFs.
for file in *.pdf; do [ -f "${file/.pdf}.tex" ] && ls "${file/.pdf/.tex}"; done
# List PDFs with matching TeX files.
for file in *.tex; do [ -f "${file/.tex}.pdf" ] && ls "${file/.tex/.pdf}"; done
您可以使用一些示例数据快速测试解决方案是否正常工作。
$ touch file1.pdf file1.tex file2.pdf file2.tex file3.pdf file4.tex
$ for file in *.pdf; do [ -f "${file/.pdf}.tex" ] && ls "${file/.pdf/.tex}"; done
file1.tex
file2.tex
$ for file in *.tex; do [ -f "${file/.tex}.pdf" ] && ls "${file/.tex/.pdf}"; done
file1.pdf
file2.pdf
请注意,在这两种情况下,都会默默忽略其他格式中没有补充的文件。