Bash脚本。重新分发文件夹中的文件

问题描述 投票:0回答:1

我需要对我的文件做一些工作,步骤就是这样。

  1. 从选择的所有文件夹中删除在json.json文件中提到测试的所有文件夹。

  2. 删除没有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
bash
1个回答
0
投票

您可以在man find中找到答案:

退出状态如果所有文件都已成功处理,则find会以状态0退出;如果发生错误,则大于0。这是一个非常宽泛的描述,但是如果返回值非零,则不应依靠查找结果的正确性。

所以即使find找不到您要查找的文件,它也会返回true,因为它成功处理了所有文件。

您可以这样使用命令替换:

if test "$(find $obj -type f -name "*.wav")"; then

检查目录是否包含任何.wav文件。

建议:请考虑像此$obj一样引用"$obj"。您可能会遇到目录或文件名称中带有空格的问题。

© www.soinside.com 2019 - 2024. All rights reserved.