你能告诉我如何更改 Unix 目录中的所有文件名,如下所示:
来自:*_mmddyyyy.xls
收件人:*_yyyymmdd.xls
谢谢,
for i in *_mmddyyyy.xls ; do mv "$i" `echo "$i" | sed -e 's/^\(.*_\)\([0-9][0-9][0-9][0-9]\)\([0-9][0-9]\)\([0-9][0-9]\)\(\.xls\)$/\1\4\2\3\5/'` ; done
使用“echo”而不是“mv”,直到您确定循环产生了正确的结果——我们中的任何一个都可能有错别字。
ls *.xls | while read f; do
base=${f%_*}
mdy=${f#*_}
mdy=${mdy%.xls}
y=${mdy#????}
md=${mdy%????}
mv $f $base_$y$md.xls
done
或者:
ls *.xls > old
sed 's/_\(....\)\(....\)/_\2\1/' old > new
paste old new | while read b n; do mv $b $n; done