wbash - 检查目录是否包含文件夹和相应的文件

时间:2017-11-04 20:27:04

标签: linux bash

我是bash的新手,我正在尝试查看我的目录是否包含其对应的txt文件的文件夹。并非所有文件夹都有相应的txt文件,并且该目录有很多文件夹和txt文件,所以我想让它自动化。

示例目录:

a_1/
a_1.txt
b_1/
b_1.txt
c_1/
c_1.txt
d_1/

我理解如何分别检查目录中是否存在文件或文件夹。但是我无法检查文件夹中是否存在相应的txt文件。

我想要打印文件夹存在的东西,但文件不存在。 从上面的示例中,它将打印具有相应文件夹的文件:folder a_1/ and a_1.txt both exist并且没有相应的txt文件:d_1/ exist but txt file doesn't.

这是我目前所拥有的,但它似乎没有起作用。 :(

#!/bin/bash
for x in *; do
    if [[ -d  "$DIRECTORY" ]] && [[ -f ${f%.txt} ]]; then
        echo -n "$x ${x%%.dir}.txt are both present ";
    else
        echo "directory '$DIRECTORY' existed but didn't find txt file"

2 个答案:

答案 0 :(得分:1)

根据您的规范,更正了脚本:

#!/bin/bash

for x in *; do
    if [[ -d "$x" ]]; then
        if [[ -f $x.txt ]]; then
            echo "$x and $x.txt are both present "
        else
            echo "Directory '$x' exists but $x.txt doesn't"
        fi
    fi
done

答案 1 :(得分:0)

只是对上述回复发表评论,双[[and]]没有必要。此外,您可以使用句点表示当前工作目录(顺便说一下,bash技巧也适用于命令行):

for x in .; do
    if [ -d ${x} ]; then
        ...
    fi
done

您还可以从命令行指定路径:

  

./ myprog.sh / Volumes / myflashdrive / filedir

path=${1}

for x in ${path}; do
    if [ -d ${x} ]; then
        ...
    fi
done