use*_*014 5 linux bash shell grep cut
我想将所有带有扩展名的文件aaa
从目录复制a
到目录b
,将扩展名替换为bbb
. 我试图做这样的事情:
ls a | grep \.bla$ | cut --delimiter=. -f 1 | xargs cp a/{}.aaa b/{}.bbb
Run Code Online (Sandbox Code Playgroud)
但是真的没戏了。我想要一个oneliner,而不是一个bash脚本。
我认为你把问题弄得太复杂了,如果目标目录是空的,你可以用下面的单行来做到这一点:
cp a/*.aaa b; rename 's/aaa$/bbb/' b/*.aaa
Run Code Online (Sandbox Code Playgroud)
该脚本使用两个命令,;
中间有一个命令在第一个命令之后执行第二个命令。
cp a/*.aaa b
Run Code Online (Sandbox Code Playgroud)
将具有模式的所有文件复制a/*.aaa
到b
目录中。通过一次调用执行此操作,该命令也将比使用管道更有效。
接下来rename
是一个实用工具,用于对文件名执行正则表达式查找和替换。通过指定,b/*.aaa
您将b
使用*.aaa
正则表达式重命名所有文件。现在您只需要指定要替换的内容,这是通过正则表达式完成的:
s/aaa$/bbb/
Run Code Online (Sandbox Code Playgroud)
aaa$
意味着最后三个字符必须是,aaa
并且您将它们替换bbb
为每个文件。
归档时间: |
|
查看次数: |
6764 次 |
最近记录: |