假设我有一堆这样的文件:bsdsa120226.nai bdeqa140223.nai,我想将其重命名为120226.nai 140223.nai。如何使用下面的脚本实现此目的?
#!/bin/bash
name1=`ls *nai*`
names=`ls *nai*| grep -Po '(?<=.{5}).+'`
for i in $name1
do
for y in $names
do
mv $i $y
done
done
Solution:
name1=`ls *nai*`
for i in $name1
do
y=$(echo "$i" | grep -Po '(?<=.{5}).+')
mv $i $y
done
仅使用bash,您可以执行以下操作:
for file in *nai* ; do
echo mv -- "$file" "${file:5}"
done
(echo
对输出满意的时候删除。)
避免ls
在脚本中显示信息。请改用普通水珠。
另请参阅如何在bash中进行字符串操作?有关更多的字符串操作技术。
您的脚本无法使用该结构:如果您有5个文件,它将mv
对第一个文件调用五次(第二个列表中的每个元素一次),对第二个文件五次,依此类推。您需要进行迭代紧紧围绕两组名称。(它也不处理文件名中的空格等问题。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句