小编nub*_*ube的帖子

在Bash中,如何删除目录中文件名中的所有数字,同时保持文件扩展名不变

我在这样的目录中有文件:

asdfs54345gsdf.pdf
gsdf6456wer.pdf
oirt4534724wefd.pdf
Run Code Online (Sandbox Code Playgroud)

我想将所有文件重命名为数字+ .pdf,以便上述文件重命名为:

54345.pdf
6456.pdf
4534724.pdf
Run Code Online (Sandbox Code Playgroud)

最好的是本机Bash命令或脚本(OSX 10.6.8)

我收到的一些线索包括

sed 's/[^0-9]*//g' input.txt 
sed 's/[^0-9]*//g' input.txt > output.txt 
sed -i 's/[^0-9]*//g' input.txt 
echo ${A//[0-9]/} rename 's/[0-9] //' *.pdf 
Run Code Online (Sandbox Code Playgroud)

macos bash

2
推荐指数
1
解决办法
1131
查看次数

Bash脚本根据文件名查找文件并对它们进行搜索替换

我有一堆遍布网络文件系统的文件(同名,例如abc.txt).

我需要递归搜索每个文件,一旦找到每个文件,就进行内容搜索并替换它们.

经过一些研究,我发现我可以使用find命令找到这些文件(使用-r直接递归?).就像是:

    find . -r -type f  abc.txt
Run Code Online (Sandbox Code Playgroud)

并使用sed来查找和替换每一个:

    sed -ie 's/search/replace/g' abc.txt
Run Code Online (Sandbox Code Playgroud)

但我不知道如何将两者粘合在一起,以便找到所有出现的abc.txt,然后对每一个进行搜索/替换.

我的目录树非常大,所以我知道在所有目录中进行递归搜索需要很长时间,但这比手动尝试查找每个文件要好.

我使用Bash使用OSX 10.6.

谢谢大家!

更新:我认为下面发布的答案可能适用于其他操作系统(也许是linux)但是对于OSX,我不得不稍微调整一下.

    find . -name abc.text -exec sed -i '' 's/search/replace/g' {} +
Run Code Online (Sandbox Code Playgroud)

在sed中的-i之后似乎需要空引号以指示我们不想生成备份文件.该手册页内容如下:

-i扩展名:

就地编辑文件,使用指定的扩展名保存备份.如果给出了零长度扩展,则不会保存备份.

macos bash replace

2
推荐指数
1
解决办法
1458
查看次数

标签 统计

bash ×2

macos ×2

replace ×1