Bash:如何替换文件夹前缀
我有一堆文件夹:Bash:如何替换文件夹前缀,bash,replace,Bash,Replace,我有一堆文件夹: test_001 test_002 我想用ftp替换前缀测试,以获得: 有一个问题:我可以在Linux服务器上进行访问,只需很少的安装。例如,未安装rename,甚至可能未安装sed。那么,如何使用纯bash替换前缀呢 由于您的安装量很小,我尝试发出一个不需要tr、sed或find的命令 输入: $ tree . . ├── a ├── b ├── c ├── test_001 └── test_002 2 directories, 3 files for d in */
test_001
test_002
我想用ftp替换前缀测试,以获得:
有一个问题:我可以在Linux服务器上进行访问,只需很少的安装。例如,未安装rename,甚至可能未安装sed。那么,如何使用纯bash替换前缀呢 由于您的安装量很小,我尝试发出一个不需要
tr
、sed
或find
的命令
输入:
$ tree .
.
├── a
├── b
├── c
├── test_001
└── test_002
2 directories, 3 files
for d in */; do mv "${d:0:-1}" "ftp"${d:4:-1}; done
tree .
.
├── a
├── b
├── c
├── ftp_001
└── ftp_002
2 directories, 3 files
CMD:
$ tree .
.
├── a
├── b
├── c
├── test_001
└── test_002
2 directories, 3 files
for d in */; do mv "${d:0:-1}" "ftp"${d:4:-1}; done
tree .
.
├── a
├── b
├── c
├── ftp_001
└── ftp_002
2 directories, 3 files
输出:
$ tree .
.
├── a
├── b
├── c
├── test_001
└── test_002
2 directories, 3 files
for d in */; do mv "${d:0:-1}" "ftp"${d:4:-1}; done
tree .
.
├── a
├── b
├── c
├── ftp_001
└── ftp_002
2 directories, 3 files
关于bash中
子字符串的解释:这个小脚本可能会有帮助:
for dir in */
do
mv "$dir" "${dir/test/ftp}"
done
在test\u 00x
目录的父目录下执行它
它可以写在紧凑的一行中:
for dir in */; do mv "$dir" "${dir/test/ftp}"; done
你为自己做了什么?我们需要看到最少的代码,以确保您已经尝试过atleast@Inian我是bash新手,通常在Windows上使用Perl来实现这类功能。从web上我发现:for I in$test*;执行mv“$i”“${i/'test'/}”;完成
。此代码删除前缀。然后我可以添加新前缀:for I in$test*;进行mv“$i”测试$i”;完成
。这是可行的,但我希望有一个更好理解的解决方案,因为这段代码的第一部分对我来说是神秘的(什么意思是I/)。通常我可以理解这个意思,但在这种情况下,这个解决方案的优点是它只考虑文件。非常有用。我接受KANTS解决方案,因为它只考虑带有前缀的文件。如果还考虑到我不想更改的目录(不仅是a、b、c,还有tttt_xxx),我应该问这个问题。