linux - 在 unix 中列出文件并将输出保存在变量中(获取特定扩展名的最旧文件)

标签 linux bash shell unix awk

对于 shell 脚本程序员来说,这可能是一件非常简单的事情,但对它来说还是个新手。我试图在 shell 脚本中执行以下命令并将输出保存到变量中

inputfile=$(ls -ltr *.{PDF,pdf} | head -1 | awk '{print $9}')

当我从终端启动命令时该命令工作正常,但当通过 shell 脚本 (sh) 执行时失败。为什么命令失败,这是否意味着 shell 脚本不支持该命令或者我做错了吗?另外我怎么知道命令是否可以在 shell 中运行?

为了让您大致了解我的要求,我试图从特定目录中获取最旧的文件(我还想确保处理大写和小写扩展名)。还有其他方法吗?

最佳答案

只有 *.pdf*.PDF 文件都在您当前所在的目录中时,上述命令才能正常工作。 如果您想在只有其中一个的目录中执行它,您应该考虑使用例如:

inputfiles=$(find . -maxdepth 1 -type f \( -name "*.pdf" -or -name "*.PDF" \) | xargs ls -1tr | head -1 )

注意:上面的命令不适用于带有换行符的文件或找到的文件的长列表。

关于linux - 在 unix 中列出文件并将输出保存在变量中(获取特定扩展名的最旧文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33332400/

相关文章:

java - 使用 JMX 进行负载平衡

linux - 如何自动调用每天创建的文件名中带有日期戳的文件

regex - 尝试将某些文件类型复制到新目录时出错

linux - 使用 curl 浏览 Web 链接的所有页面

bash - 使 Sublime Text 颜色成为常见的 Bash 命令(cp、mv、...)

bash 错误 : Integer expression expected

linux - 如何模拟键盘按键(+ 'ALT'键的ASCII码)

linux - 查看 PS 命令的完整输出

python - 如何 git 安装而不是 pip 安装?

bash - 如何访问参数中变量的内容?