ser*_*rge 6 command-line bash alias find
我有别名
alias moveit='mkdir $1 && find -name "*$1*" -type f -exec mv -t ~/$1 {} +'
Run Code Online (Sandbox Code Playgroud)
但我不太确定我做错了什么。
任何帮助将非常感激。
我正在尝试在键入时创建别名 moveit pdf
pdf
在当前工作目录中调用的目录。pdf
在工作目录及其所有子目录中搜索名称中包含的所有文件。pdf
.我知道这pdf
会返回不是pdf
s 的其他文件。我基本上是在尝试创建一个自动排序脚本。
我有文件叫:
alias moveit='mkdir $1 && find -name "*$1*" -type f -exec mv -t ~/$1 {} +'
Run Code Online (Sandbox Code Playgroud)
我想将这些文件分类到名为pdf
、txt
和 的文件夹中rtf
,所有这些都在一个脚本中,或者现在至少一次一个。
要实现此功能,您必须使用一个临时函数:
alias moveit='f() { mkdir "$1" && find -name "*$1*" -type f -exec mv -t "$1" {} +; unset -f f; }; f'
Run Code Online (Sandbox Code Playgroud)
它按预期工作。例如,moveit pdf
将包含该字符串的所有文件移动pdf
到新创建的目录中pdf
。
定义部分f() { mkdir "$1" && find -name "*$1*" -type f -exec mv -t "$1" {} +; unset -f f; };
定义函数,最后部分f
调用该函数。
函数定义的最后一部分unset -f f;
在执行别名时删除函数定义,这样它就不会在之后徘徊。
有关更多信息,请查看“如何将参数传递给别名?” 问题。