将与模式匹配的文件移动到新目录的一行
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
我需要将主目录中的文件移动到新目录中。我需要 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