如何将 find 命令与 mv 命令集成?

-1 find mv

我试图将名称以大写字母开头的所有文件从当前目录移动到名为uunder的目录~/tmp

我尝试了这个命令:find . -type f -name "*[[upper]]*" -exec mv -t ~/tmp/u
但它不起作用。

G-M*_*ca' 5

你\xe2\x80\x99非常接近。

\n
    \n
  1. 您需要在标记中使用冒号[[:upper:]]

    \n
  2. \n
  3. "*[[:upper:]]*"将查找包含大写字母的每个名称。\xc2\xa0\n要仅获取名称以大写字母开头的文件,\n请使用"[[:upper:]]*"(省略 \xc2\xa0first\xc2\xa0 *)。

    \n
  4. \n
  5. 如果你说只是

    \n
    find . -name \'[[:upper:]]*\'\n
    Run Code Online (Sandbox Code Playgroud)\n

    它将列出所有名称以大写字母开头的文件。\xc2\xa0\n但是,\xc2\xa0当\xc2\xa0你\xc2\xa0使用\xc2\xa0时-exec,\n你\xc2\xa0必须告诉find\xc2\xa0include \xc2\xa0 中的文件名\xc2\xa0 命令,使用\xc2\xa0{}

    \n

    (在尝试告诉find它 \xc2\xa0run\xc2\xa0 命令之前,\n尤其是修改文件系统的命令。\xc2\xa0\n使用-exec echo mv \xe2\x80\xa6在尝试告诉它 \xc2\xa0run\xc2\xa0 命令之前,\n尤其是修改文件系统的命令,\xc2\xa0\n使用\nis\xc2\ xa0a\xc2\xa0常见调试技术。)

    \n
  6. \n
  7. 但是,当您使用 时-exec,您必须以 \xc2\xa0 \';\'\n(或,\xc2\xa0 等效地,\xc2\xa0 \\;)\xe2\x80\x82 或 \xc2\xa0 +.\xe2\x80\x82\ 结束命令。 n(请参阅手册页,\或St\xc3\xa9phane Chazelas\'s 对此问题的回答,以了解差异。)\xc2\xa0\n由于您正在使用mv -t,因此可以使用 \xc2\xa0+

    \n
  8. \n
\n

所以你的最终命令是

\n
find . -name \'[[:upper:]]*\' -exec mv -t ~/tmp/u {} +\n
Run Code Online (Sandbox Code Playgroud)\n