Linux将不是以String开头的txt文件移动到另一个文件夹

问题描述 投票:0回答:1

情况是我有一个目录A,文件夹中有一堆文件和文件夹。例如文件夹B,文件夹C,tmp1.txt,Hello.txt,tmp3.txt,okay.txt。在文件夹B中,也有一堆文件。因此,我想将所有txt文件都递归地移动到另一个文件夹(例如/ home)。这是我的代码。

find . -name "*.txt"| grep -v [\s\S]*tmp[\s\S]* -exec mv {} /home \;

我只能选择这些文件,但是它不会执行移动操作。enter image description here

因为linux find在结果中有路径。所以它使我非常烦恼。

linux move
1个回答
0
投票

要仅移动常规文件,请添加-type f并使用\!排除不需要的文件:

find . -type f -name '*.txt' \! -name '*tmp*' -exec mv -i -t /home {} +

-i要求许可是否已覆盖文件,并且一次调用+会使用\;而不是mv来移动尽可能多的文件(因此,我们需要使用-t选项指定目标目录,因为{}包含多个文件)。

© www.soinside.com 2019 - 2024. All rights reserved.