【问题标题】:Linux Move txt files not start with String to Another folderLinux将不以字符串开头的txt文件移动到另一个文件夹
【发布时间】:2020-03-29 04:53:18
【问题描述】:

情况是
我有一个目录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 \;

我只能选择这些文件,但不会执行移动操作。

因为 linux find 在结果中有路径。所以它很烦我。

【问题讨论】:

  • 注意: 在 Unix/Linux 系统上,您可能不会用一堆文本文件来混淆 /home。 /home 是一个特定的 FHS 必需目录,其中包含用户主目录。

标签: linux move


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-26
    • 1970-01-01
    • 2013-12-08
    • 1970-01-01
    • 2022-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多