Bash 更改文件名并将其移动到同名文件夹
我试图保持一些媒体文件的组织-从命名约定到文件夹层次结构。这些文件保存在服务器上,因此最好以cron的形式运行。主要问题是,根据拍摄者的不同,一些图像的命名不恰当 我当前拥有的文件夹结构是:Bash 更改文件名并将其移动到同名文件夹,bash,file,directory,Bash,File,Directory,我试图保持一些媒体文件的组织-从命名约定到文件夹层次结构。这些文件保存在服务器上,因此最好以cron的形式运行。主要问题是,根据拍摄者的不同,一些图像的命名不恰当 我当前拥有的文件夹结构是: Landscapes (2012) Buildings (2013) Contemporary Designs (2014) etc. 文件保存为: Landscapes 010 (2012).jpg # correct Landscapes 011 (20
Landscapes (2012)
Buildings (2013)
Contemporary Designs (2014)
etc.
文件保存为:
Landscapes 010 (2012).jpg # correct
Landscapes 011 (2012).jpg # correct
Landscapes (2012) 012 (Regional_Airport).jpg #sometimes happens and need to delete the (Regional_Airport)
- 我希望对文件名进行修剪,以保留名称日期和顺序#(无论位置如何)*希望将它们保持在相同的顺序,例如(区域#机场)将被删除,并将012放在(2012)前面
- 将文件移动到具有相同名称和年份的文件夹中
#/bin/bash
RootFolder=/Volumes/image\u存储
#仅在新行上拆分
OLDIFS=“$IFS”#保存它
如果=“
"
file=“$1”
对于$(ls-1$RootFolder/)中的文件夹;做
ufolder=`echo$folder | tr“[:上限:”“[:下限:”`
ufile=`echo$file | tr“[:上限:”“[:下限:”`
如果grep-q$ufolder-Well-您可以使用类似于\w+\d{3,}\(\d{4}\).jpg的正则表达式来检查您的姓名是否为指定格式。但是关于修复它们,你需要做很多假设。。例如,如果索引号是2009年,但年份是2010年,而人类在相反的位置输入它们-你怎么知道?这里没有全面的解决方案。任何脚本都必须对文件的命名方式做出一些假设,因为没有任何东西可以阻止用户命名文件foobarbaz.xyz.jpg
或任何数量的其他无用和不正确的名称。在这种情况下,没有人为干预就不可能恢复。不过,我想这对你来说并不是什么新闻。因此,您最好使用一组正则表达式来捕获最常见的命名错误,尽管problemPotato指出,即使文件与正则表达式匹配,也可能会得到不好的结果。你们都是对的。我如何在正则表达式中处理两个最常见的问题(马铃薯-你正在做某事),\w+\d{3,}(\d{4}).jpg和\w+(\d{4})+d{3,}.jpg。谢谢