我使用这个命令在当前目录中查找所有包含 .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 行: [[!: command not found
#!/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
/home/user/bin/try.sh:第 5 行:[!:找不到命令
我认为这与 test 命令的多个参数有关。
由于我正在测试所有目录,因此变量将发生变化,并且我使用通配符作为文件名。
任何帮助深表感谢。谢谢你。