我需要对我的文件做一些工作,步骤就是这样。
从选择的所有文件夹中删除在json.json文件中提到测试的所有文件夹。
删除没有wav文件的文件夹
我已经写了脚本,不明白为什么我没有用空目录回显?
#!/bin/bash
for obj in rom/*; do
if [ -d "$obj" ]; then
if
grep -w test $obj/*.json; then
echo $PWD/$obj
rm -rf $PWD/$obj
fi
if
find $obj -type f -name "*.wav"; then
echo "ok"
else
echo "In this dir you haven't .wav files"
# rm -rf $PWD/$obj
fi
fi
done
您可以在man find中找到答案:
退出状态如果所有文件都已成功处理,则find会以状态0退出;如果发生错误,则大于0。这是一个非常宽泛的描述,但是如果返回值非零,则不应依靠查找结果的正确性。
所以即使find
找不到您要查找的文件,它也会返回true,因为它成功处理了所有文件。
您可以这样使用命令替换:
if test "$(find $obj -type f -name "*.wav")"; then
检查目录是否包含任何.wav
文件。
建议:请考虑像此$obj
一样引用"$obj"
。您可能会遇到目录或文件名称中带有空格的问题。