Macos 正在尝试编写shell脚本以将最近的文件从下载移动到另一个文件夹

Macos 正在尝试编写shell脚本以将最近的文件从下载移动到另一个文件夹,macos,shell,download,terminal,iterm2,Macos,Shell,Download,Terminal,Iterm2,我正在尝试编写一个脚本,该脚本将从我的下载文件夹中查找最近添加的项目并移动到另一个文件夹。我差一点就到了,但最后一部分却被卡住了。我这样做是为了更好地学习iTerm2,而不是出于实际原因。我意识到在浏览器中有更简单的方法来实现这一点 ls -t1 /Users/name/downloads | head -n 1 | > Users/name/targetfolder 您可以正确查找具有以下内容的最新项目: ls -t1 /Users/name/downloads | head -n

我正在尝试编写一个脚本,该脚本将从我的下载文件夹中查找最近添加的项目并移动到另一个文件夹。我差一点就到了,但最后一部分却被卡住了。我这样做是为了更好地学习iTerm2,而不是出于实际原因。我意识到在浏览器中有更简单的方法来实现这一点

ls -t1 /Users/name/downloads |  head -n 1 | > Users/name/targetfolder

您可以正确查找具有以下内容的最新项目:

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-n1)
被最新的文件替换


因此,基本上,该命令意味着
mv most_recent_file Users/name/targetfolder

您可以正确地找到具有以下内容的最新项目:

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-n1)
被最新的文件替换


因此,基本上,该命令意味着
mv most\u recent\u file 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"

如果项目是文件,则可以将
命令通过管道传输到
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"

用于将最近下载的文件移动到目标目录或当前目录的解决方案:

#/垃圾箱/垃圾箱
如果[-z“$1”]
然后
mvdir=$(pwd)
其他的
mvdir=$1
fi
dldir=$HOME/下载
mv$dldir/$(ls-t1$dldir |头-n 1)$mvdir
这甚至可以在下载文件夹或目标目录之外工作

用法(脚本名为
mvd
):

mvd#移到pwd
mvd#移动到目标方向

我用于将最近下载的文件移动到目标目录或当前目录的解决方案:

#/垃圾箱/垃圾箱
如果[-z“$1”]
然后
mvdir=$(pwd)
其他的
mvdir=$1
fi
dldir=$HOME/下载
mv$dldir/$(ls-t1$dldir |头-n 1)$mvdir
这甚至可以在下载文件夹或目标目录之外工作

用法(脚本名为
mvd
):

mvd#移到pwd
mvd#移动到目标方向