我正在尝试编写一个脚本,该脚本将从我的下载文件夹中找到最近添加的项目并移动到另一个文件夹。我很接近,但卡在最后一部分。我这样做是为了更好地学习iTerm2,而不是出于实际原因。我意识到在浏览器中有更简单的方法可以做到这一点。
ls -t1 /Users/name/downloads | head -n 1 | > Users/name/targetfolder
如果项目是文件,则可以通过管道将head
命令传送到cp
:
ls -t1 /Users/name/downloads | head -n 1 | xargs cp -t Users/name/targetfolder
您还可以添加一个测试来检查该项目是文件还是目录:
last=$(ls -t1 . | head -n 1)
todir=Users/name/targetfolder
[ -d $last ] && cp -r "$last" "$todir" || cp "$last" "$todir"
您通过以下方式正确查找最新项目:
ls -t1 /Users/name/downloads | head -n 1
但是,您犯了错误。
您可以做的是:
mv $(ls -t1 /Users/name/downloads | head -n 1) Users/name/targetfolder
上面是一个标准的mv
命令,其语法为:
mv filename target_filename # if you are renaming a file. Or,
mv filename target_dirname # if moving the file to a different directory.
$()
之间的任何命令都将替换为其输出。
因此$(ls -t1 /Users/name/downloads | head -n 1)
被最新的文件替换。
因此,基本上,该命令意味着mv most_recent_file Users/name/targetfolder