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
选项指定目标目录,因为 {}
包含多个文件)。
情况是
我有一个目录 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
选项指定目标目录,因为 {}
包含多个文件)。