/ / wbash - перевірка наявності директорії папки та відповідного файлу - linux, bash

wbash - перевірка, якщо каталог має папку та відповідний файл - linux, bash

Я новачок у баш, і я намагаюся побачити, чи мояКаталог містить папку відповідного файлу 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"

Відповіді:

1 для відповіді № 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

0 для відповіді № 2

Просто коментар до вищенаведеної відповіді, подвійний [[і]] не є необхідними. Крім того, ви можете позначити поточний робочий каталог за допомогою періоду (bash trick, який також працює в командному рядку):

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

Також можна вказати шлях з командного рядка:

./myprog.sh / Томи / myflashdrive / filedir

path=${1}

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