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

Linux Move txt files not start with String to Another folder

情况是
我有一个目录 A,文件夹中有一堆文件和文件夹。 比如文件夹 B , foler 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 \;

我只能select这些文件,但是它不会执行移动操作。

因为 linux 在 result.So 中找到了路径,这让我很烦。

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

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

如果文件已经存在,-i 请求覆盖文件的权限,并且 + 而不是 \; 用于通过一次调用移动尽可能多的文件mv(因此我们需要使用 -t 选项指定目标目录,因为 {} 包含多个文件)。