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