我用这个命令来查找包含在当前目录中的MP3播放所有目录,并筛选出只有目录名称:列出不包含某些文件的目录?
find . -iname "*.mp3" | sed -e 's!/[^/]*$!!' -e 's!^\./!!' | sort -u
我现在想的相反,但我发现它有点困难。我不能只添加'!'到find命令,因为打印它们时只会排除.mp3而不能找到不包含.mp3的目录。
我搜索了这个并在stackoverflow和unix.stackexchange.com上搜索。 到目前为止我试过这个脚本,它返回此错误:
#!/bin/bash
find . -type d | while read dir
do
if [[! -f $dir/*.mp3 ]]
then
echo $dir
fi
done
/home/user/bin/try.sh:5号线:[[:找不到命令
#!/bin/bash
find . -type d | while read dir
do
if [! -f $dir/*.mp3 ]
then
echo $dir
fi
done
/家庭/用户/箱/ try.sh:第5行:[:找不到命令
#!/bin/bash
find . -type d | while read dir
do
if [[! -f "$dir/*.mp3" ]]
then
echo $dir
fi
done
/home/user/bin/try.sh:5号线:[:找不到命令
我在想它必须处理测试命令的多个参数。
由于我正在测试变量将要更改的所有目录,并且我使用通配符作为文件名。
任何帮助,非常感谢。谢谢。
在'['和'!'之间加上一个空格将修复即时错误,但是测试仍然会在具有多个.mp3文件的目录中失败。 'echo'方法效果更好(虽然它仍然可能在包含一个.mp3的目录中以'* .mp3'的确切名称失败)。 –
如果需要测试多个扩展,则查找解决方案也可以更好地扩展。 – perh
谢谢你的回应。我用空格做了修改,但它仍然返回了目录名称,即使里面没有mp3。 –