设计bash脚本我必须做一个简单的设计,但我不知道该怎么办呢用于提取未知的文件名部分
我有两个文件夹folderA和文件夹B. folderA的里面我有一个名为两个文件“file_”和“file_anything”。第二个文件的“任何”部分是我不知道的一些文本(或者对于各种文件夹可能不同)。我需要做的是将folderB的名称更改为任何文字为“任何东西”,而无需特别了解
如果超出了程序,我会感到欣慰的是有人给我一个链接,指向您用来理解和能够修改或适应其他情况的solutuions。我想学习
感谢
编辑: 我需要这个解决方案将包括在要被重复了很多具有相同estructure文件夹的夫妇bash脚本(无Perl函数)内。例如:
FolderA(与文件 “_文件” 和 “file_manana”)和FolderB中---变化---> FolderA和晨报(原FolderB中)
FolderC(与文件 “_文件” 和“ File_monkey“)和FolderD ---更改为---> FolderA和Monkey(前FolderD)
FolderE(带有文件”file_“和”file_moose“)和FolderF ---更改为---> FolderA和驼鹿(原FolderF)
很多很多次多了很多文件夹
埃德它2:
好吧,我越来越近。现在的问题是这样的:我这样定义fn:fn = file_a *知道该文件夹中只有一个与该指令相匹配的文件。我确认这样做echo $ fn。现在我这样做:fn = $ {fn ## * _}。但是,fn不会变成“任何东西”,而是变成“a *”。我该如何解决这个问题? @David Zaslavsky
编辑3:Thx @chepner。 BASH_REMATCH是要走的路。我用它一点点的改变,因为你写的方式didin't为我工作
for f in FolderA/file_*; do # I assume a single match
[[ $f =~ "file_"(.*) ]]
suffix=${BASH_REMATCH[1]}
mv FolderB "$suffix"
done
注意引号。他们之间,我甚至可以包含空格
THX大家
我不确定要理解你的问题,但我认为'rename' cmd可以帮助你。你只给出一个'ed'命令来重命名文件。例如:'s/file _ //'删除这部分。 – Zulu 2013-03-05 22:30:18