对于 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/