我必须做一个简单的设计,但我不知道怎么做
我有两个文件夹文件夹 A 和文件夹 B。在文件夹 A 内,我有两个名为“file_”和“file_anything”的文件。第二个文件的“任何”部分是一些我不知道的文本(或者对于不同的文件夹可能不同)。我需要做的是将文件夹B的名称更改为任何文本是“任何东西”,而无需特别知道
如果在程序之外有人给我一个指向您用来理解并能够修改或调整解决方案以适应其他情况的主题的链接,我会很感激。我想学习
谢谢
编辑:我需要将此解决方案包含在 bash 脚本(无 perl 函数)中,该脚本将对许多具有相同结构的文件夹重复。例如:
FolderA(带有文件“file_”和“file_manana”)和FolderB---更改为---> FolderA和manana(以前的FolderB)
FolderC(带有文件“file_”和“file_monkey”)和FolderD---更改为---> FolderA和monkey(以前的FolderD)
FolderE(带有文件“file_”和“file_moose”)和FolderF---更改为---> FolderA和moose(以前的FolderF)
很多次有更多的文件夹
编辑2:
好的,我越来越近了。现在的问题是:我这样定义 fn:fn=file_a* 知道该文件夹中只有一个与该指示匹配的文件。我确认这样做 echo $fn。现在我这样做:fn=${fn##*_}。但是,fn 不会转换为“anything”,而是转换为“a*”。我该怎么解决?@大卫扎斯拉夫斯基
编辑 3:谢谢@chepner。BASH_REMATCH 是要走的路。我稍作改动就使用它,因为您编写它的方式对我不起作用
for f in FolderA/file_*; do # I assume a single match
[[ $f =~ "file_"(.*) ]]
suffix=${BASH_REMATCH[1]}
mv FolderB "$suffix"
done
注意引号。在它们之间我什至可以包含空格
谢谢大家