我需要一个bash脚本/命令来搜索_sh
中工作目录末尾的所有文件,将它们移到文件夹./Folder
并将后缀_sh
更改为{{ 1}}
如果有人能指出我正确的方向,我将不胜感激
答案 0 :(得分:2)
这是一个简单的bash脚本:
#!/bin/bash
for file in *_sh; do # Loop over all files ending in _sh
mv "$file" "${PWD}/Folder/${file%_sh}_priv" # Move files to Folder with new suffix
done
答案 1 :(得分:0)
如果你安装了rename
(a.k.a Perl重命名),你可以非常简单地使用一行代码,包括制作目标目录:
rename --dry-run --mkpath 's|^|Folder/|; s|_sh$|_priv|' *_sh
示例输出
'other_sh' would be renamed to 'Folder/other_priv'
'sample1_sh' would be renamed to 'Folder/sample1_priv'
当您对开关更熟悉时,这将变得更短:
rename -p 's|^|Folder/|; s|_sh$|_priv|' *_sh
如果你不熟悉Perl,那么中间会有两个替换,用逗号分隔:
rename -p ' SUBSTITUTION1 ; SUBSTITUTION2 ' *.sh
第一次替换使用前缀^
替换Folder/
(表示“行首”)。
第二次替换将行_sh
)末尾的$
替换为_priv
。
除了可以使用的Perl代码的所有功能之外,rename
还具有能够进行干运行的额外好处,因此您可以测试代码,并且还能够创建输出目录并发出警告如果多个文件会聚合到同一个名称并导致数据丢失。
对于任何macOS用户,rename
最简单地安装自制,如下所示:
brew install rename