快速、一次性地需要少量文件:

快速、一次性地需要少量文件:

我需要通过 cp 命令将一个文件夹中所有不以 .txt、.cpp 和 .h 扩展名结尾的文件移动到一个单独的文件夹。

有内置的方法可以做到这一点还是我需要编写脚本?

答案1

这完全取决于您所需的稳健性。其中一些想法(例如 -print0)并非在所有系统上都可用,所以 YMMV。

快速、一次性地需要少量文件:

  1. mkdir .tmp
  2. mv *.txt *.cpp *.h .tmp
  3. mv * /separate_folder/
  4. mv .tmp/* .
  5. rmdir .tmp

当然,这是一种 hack,但它不会占用 I/O,只需几秒钟即可完成,并且是便携式的。

对于处理许多文件:

find . -maxdepth 1 -type f ! -name '*.txt' ! -name '*.cpp' ! -name '*.h' -print0 | xargs -0 mv -t /separate_folder/

如果您的文件名不包含空格或其他奇怪的字符,您可能可以省略 and -print0-0从而依赖于默认-print逻辑)。

如果使用 Bash

GLOBIGNORE请参阅有关变量“限制与模式匹配的文件名集”以及!(pattern-list)“匹配除给定模式之一之外的任何内容”的Bash 手册页。

相关内容