在 Linux 中使用 xargs 与 mv 和 mkdir 命令

在 Linux 中使用 xargs 与 mv 和 mkdir 命令

我正在尝试使用命令创建一个目录mkdir。但是,我想将文件子集移动到该目录中。我明白我可以使用参数,但我的尝试失败了。例如,我尝试过。它创建了目录,但在创建目录后mkdir test | xargs -i mv test.text {}并没有将文件移动到其中。test.txt

答案1

mkdir不输出任何内容,因此xargs不会做任何有用的事情。我不明白你到底想做什么,所以你应该更好地解释你的问题。

“想将文件子集移动到该目录中” -> 此子集中的文件是否共享一个或多个特征?如果是,请使用寻找命令如下:

find [conditions] -exec mv "{}" dirname \;

如果你不想输入两次目录名称,或者你正在通过脚本执行此操作,则可以执行以下操作

dirname=test
mkdir $dirname && mv filename $dirname

答案2

我认为 mkdir 不会产生任何输出以通过管道传输到 xargs。

执行“mkdir test1 test2 testhello3 | grep hello”不会产生任何输出,而执行“ls | grep hello”会显示“testhello3”。

您能否先生成文件夹,然后使用 ls、grep 和 xargs 来执行此操作?

ls | grep (unique search to get folder name) | xargs -i mv test.txt {}

也许有关移动文件标准等的更多信息可能会有所帮助。

答案3

我的猜测接近用户 49740 的答案:

mkdir test && find -type f -name 'test.*' -exec mv {} test \;

您想创建多少个不同的目录?

相关内容