我有别名
alias moveit='mkdir $1 && find -name "*$1*" -type f -exec mv -t ~/$1 {} +'
但我不太清楚我做错了什么。
如能得到任何帮助我将不胜感激。
我正在尝试创建一个别名,输入moveit pdf
pdf
在当前工作目录中创建一个名为的目录。pdf
在工作目录及其所有子目录中搜索名称中包含的所有文件。- 将找到的文件移动到名为 的新文件夹中
pdf
。
我知道这pdf
将返回其他不是pdf
s 的文件。我本质上是想创建一个自动排序脚本。
我有一个名为的文件:
greatfile[pdf].rar
greatfile[txt].rar
greatfile[rtf].zip
badfile[pdf].zip
badfile[txt].zip
badfile[rtf].rar
okayfile[pdf].tar.bz
okayfile[txt].zip
okayfile[rtf].rar
现在我想用一个脚本将这些文件分类存放到名为pdf
、txt
和rtf
的文件夹中,或者至少一次存放一个。
答案1
为了使其工作,您必须使用一个临时函数:
alias moveit='f() { mkdir "$1" && find -name "*$1*" -type f -exec mv -t "$1" {} +; unset -f f; }; f'
它按预期工作。例如,moveit pdf
将所有包含字符串的文件移动pdf
到新创建的目录中pdf
。
定义部分f() { mkdir "$1" && find -name "*$1*" -type f -exec mv -t "$1" {} +; unset -f f; };
定义函数,最后一部分f
调用此函数。
函数定义的最后一部分unset -f f;
在执行别名时删除函数定义,以便它之后不会挂起。
如需更多信息,请查看“如何将参数传递给别名?”问题。