Regex 用乱码分割字符串
我下载了一堆带有乱码的zip文件。文件名如下所示:Regex 用乱码分割字符串,regex,linux,string,bash,Regex,Linux,String,Bash,我下载了一堆带有乱码的zip文件。文件名如下所示: 598»° 2Äêºó.zip 599»° ²Ýñ¾ÅÈË.zip 我试图编写一个脚本来在Linux系统中重命名文件名,这样上面的名称将变成598.zip和599.zip 我使用ls和grep命令将所有zip文件读入一个长字符串,例如称之为'total'。然后我对循环使用了: for $name in $total; do mv $name $newname; done 不幸的是,脚本在这里不起作用
598»° 2Äêºó.zip
599»° ²Ýñ¾ÅÈË.zip
我试图编写一个脚本来在Linux系统中重命名文件名,这样上面的名称将变成598.zip和599.zip
我使用ls
和grep
命令将所有zip文件读入一个长字符串,例如称之为'total'。然后我对循环使用了:
for $name in $total; do
mv $name $newname;
done
不幸的是,脚本在这里不起作用。实际上,for循环将按空格分割字符串$total。上面显示的名称有空格字符。这些额外的空格字符使$name与zip文件的实际名称不匹配。我不知道怎么处理它。任何帮助都将不胜感激 find-maxdepth 1-iname'*.zip'|同时阅读ie
find -maxdepth 1 -iname '*.zip' | while read ie
do
oe=$(awk NF=1 FPAT=[0-9]+ <<< "$ie").zip
mv "$ie" $oe
done
做
oe=$(awk NF=1 FPAT=[0-9]+find-maxdepth 1-iname'*.zip'|同时阅读ie
做
oe=$(awk NF=1 FPAT=[0-9]+我得到了答案。
在脚本执行此操作之前,只需添加以下代码:
IFS='
'
这将使用换行符作为内部字段分隔符。现在空格只是“普通”字符。我得到了答案。
在脚本执行此操作之前,只需添加以下代码:
IFS='
'
这将使用换行符作为内部字段分隔符。现在空格仅为“普通”字符。FPAT仅在awk 4及更高版本中受支持。您可以直接使用shell
find -maxdepth 1 -iname '*.zip' | while read file
do
echo mv "$file" "${file/[^0-9]*/}"
done
如果上述脚本正常,请删除echo,然后重新运行。FPAT仅在awk 4及以上版本中受支持。您可以直接使用shell
find -maxdepth 1 -iname '*.zip' | while read file
do
echo mv "$file" "${file/[^0-9]*/}"
done
如果上述脚本正常,请删除echo
,然后再次运行。引用变量以防止在空格上拆分。可能是此问题与shell配置文件中使用的字符编码有关。请尝试utf-8以获得可读的表示引用变量以防止在空格上拆分。可能是此问题与c有关您的shell配置文件中使用的字符编码。请尝试utf-8以获得可读的表示谢谢!这很好。但是,输出看起来像“598 2.zip”、“599.zip”为什么1
声誉?:]谢谢!这很好。但是,输出看起来像“598 2.zip”、“599.zip”为什么1
声誉?:]