gpt4 book ai didi

linux - 替换目录中文件的最后四个字符

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:52:59 24 4
gpt4 key购买 nike

我在 unix env 的 opt/app/tre 目录中有以下文件

qweqtql.txt
drtqtol.txt
reqttgl.txt
seqwtpl.txt

现在我要去掉文件名的最后四个字符,一个目录下可以有n个文件但是命令或 unix 脚本应该扫描目录中的所有文件并替换名称本身的最后四个字符。

所以文件名的结果是

qwe.txt
drt.txt
req.txt
seq.txt

最佳答案

您可以使用重命名命令。

要删除最后四个字符(abcdefghijklmnopq.txtabcdefghijklm.txt):

rename 's/(.?+).{4}\.txt$/$1.txt/' *.txt

要删除除前三个字符以外的所有内容(abcdefghijklmnopq.txtabc.txt):

rename 's/(.{3}).*/$1.txt/' *.txt

如果您希望对文件夹(包括子目录)中的所有 .txt 文件执行此操作:

find . -name "*.txt" -exec rename 's/(.?+).{4}\.txt$/$1.txt/' {}  \;

这可以正确处理包含空格的目录和文件名,这通常很难正确处理。


PS: 在执行 rename 命令之前,最好先使用 --no-act 验证它将执行的操作> 选项。换句话说:

rename --no-act 's/(.?+).{4}\.txt$/$1.txt/' *.txt

或者:

find . -name "*.txt" -exec rename --no-act 's/(.?+).{4}\.txt$/$1.txt/' {}  \;

我假设您希望在扩展名为 .txt 的文件上使用它。如果没有,请告诉我们,我会相应地进行修改。

关于linux - 替换目录中文件的最后四个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29342202/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com