这不是非常易读 - 用一些不错的换行来制作这个脚本或shell函数要好得多 - 但如果你真的想要,你可以强制循环成为一个单行。
# 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
请注意,在这两种情况下,将以静默方式忽略其他格式中没有补充的文件。