我有一系列具有此命名约定的文件夹:
DD / MM / YYYY - Name
例如:
01 / 05 / 2015 - test folder
我想转换格式以便于阅读,因为名称比日期更重要。
我希望输出为
Name DD-MM-YYY
for i in *; do mv "$i" ...
那么我如何在终端中,或通过.sh(bash):
将/
(\s\/\s
)替换为-
?
将DD-MM-YYYY移到后面?
删除-
(\s\-\s
)?
答案 0 :(得分:0)
好的希望在这里你有办法做到这一点。 可能它可以做得更好,但它是一个起点。
首先,将文件名设置为变量
file='01 / 05 / 2015 - test folder'
然后我使用-
作为分隔符来抓取第一部分(日期),然后我使用/
更改了-
:
file_name=`echo $file | cut -f2 -d-`
file_date=`echo $file | cut -f1 -d- | sed 's/\//-/g'`
然后设置最终名称:
mv "$file" "$file_name $file_date"
另外,如果要删除$ file_name的第一个空格,请尝试使用
file_name=`echo $file | cut -f2 -d- | cut -c 2-`
用于剪切字符串的第一个字符。
答案 1 :(得分:0)
awk -F/ '{ split($3,bits,"-");var=$1"-"$2"-"bits[1];print gensub(" ","","g",bits[2])" "gensub(" ","","g",var) }'
这里我们使用“/”拆分数据然后用“ - ”进一步拆分第三段数据(使用拆分函数)然后我们使用gensub函数删除需要的空格。