【发布时间】:2016-06-23 04:48:43
【问题描述】:
我有一个从 6 月初到今天的文件列表,其中包含任意名称和日期。
他们是:
JUNE 13.pdf
JUNE 16 MIDTERM REVIEW LAND GRABS 1 EXCLUSION AND BACKGROUND,.pdf
LECTURE JUNE 21 RUBBER RIGHTS RESISTANCE.pdf
SUMMER JUNE 15 TITLING AND LEGIBILITY.pdf
SUMMER JUNE 22 LIVELIHOODS.pdf
summer JUN 14 PROPERTY RIGHTS LECTURE.pdf
我今天已经尝试了很长一段时间来掌握 bash,但在我看过的所有解决方案中,我都无法理解非常复杂的语法。我知道您可以从文件中提取日期并相应地命名,但我真的很想学习如何使用 bash 提取子字符串。
我想出的最佳解决方案来自here
for j in *.pdf;
do
length=`expr match "$j" 'JUN[E, ] ??'`
ind=`expr index "$j" 'JUN' `
mv $j ${j:ind:length}
done
但是这个解决方案只是给了我很多语法错误,没有任何迹象表明我做错了什么。我也尝试过使用剪切、重命名和其他一些“标准”的东西,但我真的很挣扎。
【问题讨论】:
-
您愿意使用 Python 或其他更强大的语言吗?
-
如果它是一个可执行的 shell 命令,那么我猜是的。
-
expr match是锚定匹配:它只会匹配字符串的开头。