首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >尝试使用标准工具重命名大容量文件夹

尝试使用标准工具重命名大容量文件夹
EN

Unix & Linux用户
提问于 2022-05-31 14:24:56
回答 2查看 75关注 0票数 0

我试图批量重命名许多文件夹,但由于某种原因,我的方法似乎不起作用。我试图使用以下脚本,但它什么也不做。我对编程很陌生,所以任何建议都很感激。这些是我有的文件夹名。

代码语言:javascript
运行
复制
test.custom.tmp         untitledfolder.custom.tmp   wis.custom.tmp

我需要他们改名为

代码语言:javascript
运行
复制
test untitledfolder wis

我正在使用下面的脚本,但它什么也不做。

代码语言:javascript
运行
复制
while read line; do
  newname=$(echo "$line" | cut -f 1 -d '_')
  mv $line newname;
done < read

在这里,我创建了一个名为read的文件,其中包含了需要重命名的所有文件夹名。

这个脚本有什么问题,还有一个更好的方法来完成这个任务吗?谢谢。

EN

回答 2

Unix & Linux用户

发布于 2022-05-31 15:34:04

一个简单的方法是:

代码语言:javascript
运行
复制
$ for d in *.custom.tmp/; do 
    echo mv -- "$d" "${d%%.*}"
  done
mv -- test.custom.tmp/ test
mv -- untitledfolder.custom.tmp/ untitledfolder
mv -- wis.custom.tmp/ wis

一旦您确定这是您想要的结果,就移除echo

${d%%.*}是一个参数展开,确切地说:

${参数% word }${参数%%word}该单词被展开以生成模式并根据下面描述的规则进行匹配(请参见模式匹配)。如果模式匹配参数扩展值的尾随部分,则展开的结果是删除了最短匹配模式(‘%’大小写)或最长匹配模式(‘%%’大小写)的参数值。

在本例中,它接受字符串(例如test.custom.tmp ),并在第一个.之后删除每个字节。

票数 2
EN

Unix & Linux用户

发布于 2022-05-31 15:40:29

如果你想保留你的秘密,你可以这样做:

代码语言:javascript
运行
复制
while read line; do
  newname=$(echo "$line" | cut -f 1 -d '.');
  mv $line $newname;
done < read

请记住,您的分隔符是一个点(-d '.'),并且还使用$newname作为变量,而不是字符串。

这将纠正您的脚本错误,但是为了获得更好的方法,您可以使用@schrodingerscat好奇心好奇答案

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/704495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档