我是linux的新手,作为练习,我需要将以数字结尾的"etc“文件从主目录复制到test1目录(使用一个命令)。我试过了,但不起作用
find /etc -type f -iname "*[3-9]" -exec cp {} ../test1/ \;
发布于 2021-04-25 12:28:27
这应该适用于您的home directory files ending with digit
mv `ls . |grep -Eo "^.*[0-9]$"` your-directory
假设在当前目录中有一些文件,如ofjweifhwef9或kfhiofeh8 (以数字结尾的文件)
所以ls
会把它们列出来。
此grep表达式 "^.*0-9$"`将仅查找以数字结尾的文件。(因为在您的主目录系统中不允许有像这样的文件"/etc/somefile123")
然后,mv会将这些文件移动到您的目录中
注意:-如果grep找不到以数字结尾的文件,你会看到一个错误,当然因为mv需要2个操作数,但由于它不在那里,所以出错。
mv: missing destination file operand after './your-directory'
发布于 2021-04-25 12:52:10
这可能是因为/etc
是您正在使用的系统中的一个链接,而find
似乎不会将其视为路径,直到您在末尾添加一个额外的/
。试着这样做:
find /etc/ -type f -iname "*[3-9]" -exec cp {} ../test1/ \;
注意/etc/
而不是/etc
。我在我的Mac上得到了相同的行为,其中/etc是到另一个目录的链接。
当然,还要确保在/etc/
目录树下有名称以数字结尾的文件。我的mac电脑里没有。当你运行以下命令时,你会得到一些文件:
find /etc/ -type f -iname "*[3-9]"
如果不这样做,则没有任何文件可供复制。您也可以尝试:find /etc/
来查看目录树下的所有文件。
最后,如果只想复制/etc/
目录中的文件,而不是复制/etc/
目录下目录树中匹配的所有文件,则可能需要添加选项:-depth 1
。
https://stackoverflow.com/questions/67249697
复制相似问题