搜索以特定后缀结尾的文件,移动它并更改surffix

时间:2018-02-06 20:35:28

标签: bash unix grep

我需要一个bash脚本/命令来搜索_sh中工作目录末尾的所有文件,将它们移到文件夹./Folder并将后缀_sh更改为{{ 1}}

如果有人能指出我正确的方向,我将不胜感激

2 个答案:

答案 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