我有一个格式为 pdf 的文件:
Author-YYYY-rest_of_text_seperated_by_underscores.pdf
John-2010-some_file.pdf
Smith-2009-some_other_file.pdf
Run Code Online (Sandbox Code Playgroud)
我需要重命名文件,以便年份是第一个,例如
YYYY-Author-rest_of_text_seperated_by_underscores.pdf
2010-John-some_file.pdf
2009-Smith-some_other_file.pdf
Run Code Online (Sandbox Code Playgroud)
所以这意味着将 'YYYY-' 元素移动到开头。
我没有unix“重命名”,必须依赖sed、awk等。我很高兴就地重命名。
我一直在尝试调整这个答案,但运气不佳。使用 sed 批量重命名文件
有关使用 bash 进行字符串操作的一般建议,请参阅BashFAQ #100。其中一项技术是参数扩展,它在下面大量使用:
pat=-[0-9][0-9][0-9][0-9]-
for f in *$pat*; do # expansion not quoted here to expand the glob
prefix=${f%%$pat*} # strip first instance of the pattern and everything after -> prefix
suffix=${f#*$pat} # strip first instance and everything before -> suffix
year=${f#"$prefix"}; year=${year%"$suffix"} # find the matched year itself
mv -- "$f" "${year}-${prefix}-${suffix}" # ...and move.
done
Run Code Online (Sandbox Code Playgroud)
顺便说一下,BashFAQ #30讨论了许多重命名机制,其中一种sed用于运行任意转换。
| 归档时间: |
|
| 查看次数: |
74 次 |
| 最近记录: |