将与模式匹配的文件移动到新目录的一行

One-liner to move files that match a pattern to a new directory

我需要将主目录中的文件移动到新目录中。我需要 select 个名称以随机 20 个大写字母开头的文件。随机集将仅包含 4 个字母:T、A、G 或 C。由于搜索的名称存在差异,并且存在包含 20 个连续大写字母但不符合 T、A、G 的名称,或仅 C 要求,正则表达式似乎是这里的最佳选择。

我试过使用正则表达式,但它不适用于此一行。

find source -name "([TAGC]{20})" -exec mv -i {} -t ~/dst \; 

有没有一种方法可以使这个或类似的单行代码适用于这种情况,或者我是否需要编写脚本?

您可以尝试使用 -regex 选项:

find . -regex ".*/[TAGC]{20}[^/]*$" -exec mv -i {} -t ~/dst \;

正则表达式必须匹配以 ./

开头的整个文件名
find . -regextype posix-egrep -regex '\./[TAGC]{20}' -print