我试图将名称以大写字母开头的所有文件从当前目录移动到名为u
under的目录~/tmp
。
我尝试了这个命令:find . -type f -name "*[[upper]]*" -exec mv -t ~/tmp/u
但它不起作用。
你\xe2\x80\x99非常接近。
\n您需要在标记中使用冒号[[:upper:]]
。
"*[[:upper:]]*"
将查找包含大写字母的每个名称。\xc2\xa0\n要仅获取名称以大写字母开头的文件,\n请使用"[[:upper:]]*"
(省略 \xc2\xa0first\xc2\xa0 *
)。
如果你说只是
\nfind . -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{}
。
(在尝试告诉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常见调试技术。)
但是,当您使用 时-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+
。
所以你的最终命令是
\nfind . -name \'[[:upper:]]*\' -exec mv -t ~/tmp/u {} +\n
Run Code Online (Sandbox Code Playgroud)\n