bash shell cmd在一行中

bash shell cmd在一行中,bash,unix,Bash,Unix,我想找到最新修改的文件,然后将其移动到一行中的不同名称 我试过了,但没用: ls -t latestfile* | head -1 | xargs mv {} newfilename 从xargs: 保持简单 mv "$(ls -t latestfile*|head -1)" newname 不应该真的解析ls的输出,但我现在很难在一行代码中找到更好的方法…Re:“更好的方法”,这正是要记录的内容。(非常明确地说,顺便说一句——不是我的反对票;不是任何一个答案的粉丝,但我也不认为任何一个答案

我想找到最新修改的文件,然后将其移动到一行中的不同名称

我试过了,但没用:

ls -t latestfile* | head -1 | xargs mv {} newfilename

xargs

保持简单

mv "$(ls -t latestfile*|head -1)" newname

不应该真的解析
ls
的输出,但我现在很难在一行代码中找到更好的方法…

Re:“更好的方法”,这正是要记录的内容。(非常明确地说,顺便说一句——不是我的反对票;不是任何一个答案的粉丝,但我也不认为任何一个答案都错得值得a-1).完全同意,但他们不是一对。我想你可以说
files=(*)newest=${files[0]};对于“${files[@]}”中的f;执行[“$f”-nt“$NEXTEST”]&&NEXTEST=“$f”;完成;mv“$newest”newname
但这太难看了,哈哈。。。正如我所说,我们不应该解析
ls
,而是在回答问题。不管怎样,感谢BashFAQ链接——这正是我想要回忆的,所以我可以在帖子中链接它,但我记不起来了我的皮肤不薄。XD…总的来说,比起正确性和角落案例处理,更关心将某些东西放到一行中是一个危险的地方。在bash中尤其如此,有很多方法既简单又危险,但在第一次测试时看起来很有效——我所遇到的最严重的数据丢失事件是由于有人对其引用过于草率,然后是一个有bug的程序,它创建了一个用空格包围的通配符的文件名。(更正先前的键入:)
mv latestfile*(om[1])newfilename
ls -t latestfile* | head -1 | xargs -I {} mv {} newfilename
mv "$(ls -t latestfile*|head -1)" newname