将一个变量添加到别名的多个部分?别名 nd='mkdir $1' 有效,但之后无法添加任何内容,为什么?

将一个变量添加到别名的多个部分?别名 nd='mkdir $1' 有效,但之后无法添加任何内容,为什么?

我有别名

alias moveit='mkdir $1 && find -name "*$1*" -type f -exec mv -t ~/$1 {} +'

但我不太清楚我做错了什么。
如能得到任何帮助我将不胜感激。

我正在尝试创建一个别名,输入moveit pdf

  1. pdf在当前工作目录中创建一个名为的目录。
  2. pdf在工作目录及其所有子目录中搜索名称中包含的所有文件。
  3. 将找到的文件移动到名为 的新文件夹中pdf

我知道这pdf将返回其他不是pdfs 的文件。我本质上是想创建一个自动排序脚本。

我有一个名为的文件:

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

现在我想用一个脚本将这些文件分类存放到名为pdftxtrtf的文件夹中,或者至少一次存放一个。

答案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;

在执行别名时删除函数定义,以便它之后不会挂起。

如需更多信息,请查看“如何将参数传递给别名?”问题。

相关内容