Bash 查找那些带有下划线的文件,这些文件在shell中没有不带下划线的匹配文件?

Bash 查找那些带有下划线的文件,这些文件在shell中没有不带下划线的匹配文件?,bash,str-replace,Bash,Str Replace,我有像klein_parat-strong-aqua-stop.jpg这样的文件。它们中的大多数都有一个对应项,所有下划线都替换为负号,例如,klein parat strong aqua stop.jpg 然而,其中一些国家没有这种对应物。我想在包含其子文件夹的文件夹中查找这些文件。我该怎么做 谢谢 试试这两个命令 for FF in `find . -type f -name "*_*" `;do echo $FF;done > list for II in `<list`;do

我有像klein_parat-strong-aqua-stop.jpg这样的文件。它们中的大多数都有一个对应项,所有下划线都替换为负号,例如,
klein parat strong aqua stop.jpg

然而,其中一些国家没有这种对应物。我想在包含其子文件夹的文件夹中查找这些文件。我该怎么做


谢谢

试试这两个命令

for FF in `find . -type f -name "*_*" `;do echo $FF;done > list
for II in `<list`;do I=`basename $II`;F2=`echo $I | tr '_' '-'`;FOUND=`find . -name "$F2"`;[ "$FOUND" == "" ] && { echo $II; };done
查找中FF的
-类型f—名称“**”`;不要重复$FF;完成>列表

对于`中的II,基本思想是首先找到所有文件,然后测试副本的存在,如注释中所述:

for i in `find . -name '*_*'`
do
    test -f "${i//_/-}" || echo "$i"
done
一行:

用于“查找”中的i-名称'*.*'`;做测试-f“${i//-}”| | echo“$i”;完成

test-f file
:检查
file
是否为普通文件。

有关在shell变量中执行字符串替换的方法,请参阅。从那以后,剩下的应该是显而易见的。你自己做了一些努力吗?对不起,这不是StackOverflow的工作方式。形式为“我想做X,请给我提示和/或示例代码”的问题被认为是离题的。请访问并阅读,特别是阅读