0

次のことを行うシェルを作成したいと思います。

1) 現在のフォルダ内のすべてのサブフォルダを調べます 2) サブフォルダのファイルに「ABC」という単語が含まれていない場合は、このサブフォルダを削除します

#!/bin/bash

echo off
CurrentFolder=.

for f in $CurrentFolder
do
    if [ grep ABC $f/* | wc -l = 0 ]
    then
       rm -rf $f
    fi
done

現在のフォルダーにはいくつかのファイルが含まれています。私の最初の質問は、fファイルを無視してすべてのサブフォルダーのみを通過させる方法です。

私の2番目の質問は、if [ grep ABC $f | wc -l = 0 ]正しいですか?

4

1 に答える 1

0

あなたの最初の質問に関しては、奇妙なことに十分です

for d in ./*/; do echo $d; done

/bin/sh であっても、ディレクトリのみを提供してくれました。しかし、それはあまりにも単純すぎて正しくないように思えます。または、試すこともできます

find . -type d -maxdepth 1

(タイプ ディレクトリを検索、深さは 1 レベルのみ)、隠しディレクトリと . 自体。

于 2013-07-10T16:29:22.373 に答える