我有多个这样的文件
2015-01-20 18.09.16 (deleted 0c279a06bf811a0c2c42bfe0d0b8af55).jpg
2015-01-20 18.09.25 (deleted c1e0789f84cf958b170c3a44d9f99bcc).jpg
2015-01-20 18.09.30 (deleted 2927f32e0378ce3e5c1625a3efe65035).jpg
2015-02-11 16.03.14 (deleted 05d37b666219f537a92e10657ebf0205).jpg
如何在日期之后删除所有内容?我希望我的文件看起来像这样:
2015-02-14 16.26.15.jpg
答案 0 :(得分:1)
这是一个选项:
for F in 2015*\(deleted*\).jpg ; do mv "$F" "${F/ (deleted*)/}" ; done
我会事先使用echo
进行测试:
for F in 2015*\(deleted*\).jpg ; do echo mv "$F" "${F/ (deleted*)/}" ; done
如果您希望模式匹配更多文件(例如,2014年)或更少文件(例如,需要完整日期匹配),我将首先进行测试。我使用了上面的一个简单模式(2015*\(deleted*\).jpg
)来希望明确基本概念。
答案 1 :(得分:0)
这是一种方法
ls *.jpg | while read OLD
do
NEW=$(echo $OLD | sed 's/.*\([0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]\).*\(\.jpg\)/\1\2/')
echo "NEW: $NEW"
done
如果名称看起来不错,您可以将echo语句替换为“mv $ OLD $ NEW”