我有一组以 1 到 1000 .csv 的数字命名的文件,我想复制名称以 1 开头的 2 个或更少数字的文件(例如 1、10、11、12 等)。如何才能做到这一点?
问问题
1024 次
2 回答
2
你可以轻松做到:
cp 1[0-9].csv /home
cp 1.csv /home
将此另存为file.sh 然后运行为
$bash file.sh
这会将所有文件复制到主目录
于 2012-09-09T07:00:41.220 回答
1
应该始终有效的正确方法:
find -regex '\./1[0-9]?\.csv' -exec cp {} destination \;
由于find
使用完整路径,我们必须./
在开头匹配 a。然后是文字1
,然后是可选的(注意?
)范围中的字符0-9
,最后是扩展名。任何.
s 都必须转义为\.
。
对于每个匹配的文件,find
将执行由 给出的命令-exec
,直到\;
,替换{}
为文件名。
要检查它是否捕获了正确的文件,请执行以下操作:
find -regex '\./1[0-9]?\.csv'
一种更简单的方法,如果您的目录中没有其他混乱,则可以使用:
cp 1.csv 1?.csv destination
于 2012-09-09T06:58:46.113 回答