无法从单行命令回显bash变量
我尝试将无法从单行命令回显bash变量,bash,unix,for-loop,filenames,cut,Bash,Unix,For Loop,Filenames,Cut,我尝试将v5.4b重新标记为v5.7的文件名如下: v5.4b_lvl-1.e8974326 v5.4b_lvl-1.o8974326 v5.4b_lvl-1.pe8974326 v5.4b_lvl-1.po8974326 v5.4b_lvl-2.1.e8974303 v5.4b_lvl-2.1.o8974303 v5.4b_lvl-2.1.pe8974303 v5.4b_lvl-2.1.po8974303 v5.4b_lvl-2.2.e8974304 v5.4b_lvl-2.2.o897430
v5.4b
重新标记为v5.7
的文件名如下:
v5.4b_lvl-1.e8974326
v5.4b_lvl-1.o8974326
v5.4b_lvl-1.pe8974326
v5.4b_lvl-1.po8974326
v5.4b_lvl-2.1.e8974303
v5.4b_lvl-2.1.o8974303
v5.4b_lvl-2.1.pe8974303
v5.4b_lvl-2.1.po8974303
v5.4b_lvl-2.2.e8974304
v5.4b_lvl-2.2.o8974304
v5.4b_lvl-2.2.pe8974304
v5.4b_lvl-2.2.po8974304
v5.4b_lvl-3.1.e8974305
v5.4b_lvl-3.1.o8974305
v5.4b_lvl-3.1.pe8974305
v5.4b_lvl-3.1.po8974305
v5.4b_lvl-4.1.e8974327
v5.4b_lvl-4.1.o8974327
v5.4b_lvl-4.1.pe8974327
v5.4b_lvl-4.1.po8974327
我不能做mv v5.4b_*v5.7_*,因为它认为v5.7_*
是一个目录,所以我尝试了一个for循环
,但我无法让它工作
我正在尝试这篇文章推荐的答案,但是得到了一大堆空行
我做错了什么?如何将cut
的输出保存到SUFFIX
,以便mv$I v5.7_$SUFFIX
?
-bash-4.1$ for i in v5.4b*; do echo $i | SUFFIX=`cut -f2 -d'_'`; echo ${SUFFIX}; done
如果重命名实用程序,只需执行以下操作:
rename -n 's/v5\4.b/v5.7/' v5.4b*
注:-n
用于干运行。您可以稍后将其删除以进行真正的重命名
如果rename
不可用,则使用:
for i in v5.4b*; do
echo mv "$i" "${i/v5.4b/v5.7}"
done
如果对输出感到满意,请删除“echo”。如果重命名实用程序,只需执行以下操作:
rename -n 's/v5\4.b/v5.7/' v5.4b*
注:-n
用于干运行。您可以稍后将其删除以进行真正的重命名
如果rename
不可用,则使用:
for i in v5.4b*; do
echo mv "$i" "${i/v5.4b/v5.7}"
done
如果您对输出感到满意,请删除“echo”。您将
echo$i
放在错误的位置。该命令的输出需要通过管道传输到cut
,以便读取任何内容,然后将结果分配给后缀
:
for i in v5.4b*
do
SUFFIX=`echo $i | cut -f2 -d'_'`
echo ${SUFFIX}
done
你把echo$i放错地方了。该命令的输出需要通过管道传输到
cut
,以便读取任何内容,然后将结果分配给后缀
:
for i in v5.4b*
do
SUFFIX=`echo $i | cut -f2 -d'_'`
echo ${SUFFIX}
done
v5.4b*中i的
;do SUFFIX=
echo$i|cut-f2-d';mv$i v5.7_${后缀};完成
非常感谢v5.4b*中的i;do SUFFIX=echo$i|cut-f2-d';mv$i v5.7_${后缀};完成
NICE Thanks我以后肯定会用这个。我必须将另一个标记为正确的,因为这是questino特有的,但非常感谢分享这一点。我投了更高的票。我以后肯定会用这个。我必须将另一个标记为正确的,因为这是questino特有的,但非常感谢分享这一点。我投了赞成票。