我写了一个bash脚本,它看起来像这样:
#!/bin/bash
D=`zenity --entry --entry-text='Folder'`
pattern1=`zenity --entry --entry-text='replace'`
pattern2=`zenity --entry --entry-text='by'`
cd "$D"
rename "s/$pattern1/$pattern2/g" *
zenity --info --text="Done"
效果很好。
我把它添加到nautilus scrips文件夹(〜/ .gnome2 / nautilus-scripts),
我做了一些改变:
#!/bin/bash
pattern1=`zenity --entry --entry-text='replace'`
if [ "$?" -eq 1 ]
then
exit
fi
pattern2=`zenity --entry --entry-text='by'`
if [ "$?" -eq 1 ]
then
exit
fi
rename "s/$pattern1/$pattern2/g" \'$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS\'
zenity --info --text="Done"
但它不起作用。
我希望我能找到一些帮助
提前谢谢。
答案 0 :(得分:0)
问题通过两种方式得到解决。 第一个:
使用for循环:
#!/bin/bash
pattern1=`zenity --entry --entry-text='replace'`
if [ "$?" -eq 1 ]
then
exit
fi
pattern2=`zenity --entry --entry-text='by'`
if [ "$?" -eq 1 ]
then
exit
fi
for file in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
do
rename "s/$motif1/$motif2/g" "$file"
done
zenity --info --text="Done"
第二个:
使用while循环:
#!/bin/bash
pattern1=`zenity --entry --entry-text='replace'`
if [ "$?" -eq 1 ]
then
exit
fi
pattern2=`zenity --entry --entry-text='by'`
if [ "$?" -eq 1 ]
then
exit
fi
echo $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS | while read 'file'
do
rename "s/$motif1/$motif2/g" "$file"
done
zenity --info --text="Done"
现在的问题是为什么我必须这样做
答案是因为$ NAUTILUS_SCRIPT_SELECTED_FILE_PATHS是序列
即使选择了一个文件,我们也会在$ NAUTILUS_SCRIPT_SELECTED_FILE_PATHS中找到文件选择路径和分隔符字符
您可以通过使用此命令来看到:(将其添加到脚本中)
zenity --entry --entry-text="$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"
我希望这对某人来说很有用 Inspired by that