我有一个运行一种 linux 操作系统的 Synology。我已经转移了很多照片。不幸的是,根据我用来导入的工具,有些是 .jpg,有些是 .JPG。这些在 Synology 上被认为是不同的,但 Windows 不太喜欢。
所以现在,我正在尝试检测具有相同名称但扩展名不同的文件,即:“2020-02-13 17.37.08.jpg”和“2020-02-13 17.37.08.JPG”
你有什么聪明的主意吗,因为 a find
,带有 a while read
, ased
和一些wc -l
包括一些if
排除单个文件的东西听起来一点都不好。
谢谢
编辑:这是一个例子
-rwxrwxrwx+ 1 admin users 5815479 Jun 25 2021 2019-02-16 13.40.39.jpg
-rwxrwxrwx+ 1 admin users 1759872 Oct 14 2021 2019-02-16 13.40.39.JPG
不
while read
,wc
或if
,但使用find
,sed
以及我希望 Synology shell 中存在的其他一些工具(无论如何,我的似乎是):这个版本采用目录中文件的名称(这就是
basename
目的),去掉最后的扩展名,然后对结果进行排序,计算我们在排序列表中找到的每个文件的数量,并排除(egrep -v
那些只是无扩展名文件名的一个实例。-print0
与 的结合xargs -0
是通过告诉两个命令期望空字符而不是换行符来处理名称中的空格来分隔路径/文件名。例如,这还将列出同时具有 a
.jpg
和.mov
扩展名的文件。如果您不想跨子目录查找匹配项,可以尝试这种(类似)方法:
这些是相当短的单行代码,为了(您的)可读性仅分布在多行上。
例子:
和
或者,跨不同的目录:
和输出: