Мне нужно написать скрипт bash, который будет рекурсивно находить все файлы в каталоге , заданном в качестве аргумента , и подсчитывает количество слов в каждом документе.
Код, который я пробовал до сих пор, найден ниже, но он не работает:
#!/usr/bin/env bash
echo "Script initialized."
# Putting on a variable the address given as an argument:
BaseDirectory=${1}
echo ""
echo "Full address of the base directory: $BaseDirectory"
echo ""
# Finding (recursively) all the *.txt files from the directory this script is being executed:
echo "Text files to be analyzed are the following:"
find . -iname '*.txt' -exec echo "{}" \;
echo ""
for File in $BaseDirectory
do
echo "File name: $File"
NumberOfWords=(wc -w $File) #Counting the words present in the file
echo "Number of words within this file: $NumberOfWords"
echo ""
done
echo ""
echo "Script totally executed."
echo ""
read -p "Press [ENTER] to close this window."
Я использую терминал Ubuntu , чтобы выполнить скрипт с помощью следующей команды строка: sudo bash myscript. sh / home / myuser / Documents /
Другие адреса папок, которые я пробовал включать:
- / home / myuser / Documents / *
- / home / myuser / Documents / *. txt
- / *
и т. д ...
Где "/ home / myuser / Documents /" - это полный адрес каталога, заданного в качестве аргумента, а также папки my bash script " myscript. sh".
Вывод моего скрипта следующий:
"Сценарий инициализирован.
Полный адрес базового каталога: / home / myuser / Documents /
Текстовый файл Для анализа необходимо выполнить следующие действия:
. / README.txt
. / TestFiles / test.txt
. / TestFiles / names.txt
Имя файла: / home / myuser / Documents /
Количество слов в этом файле: w c
Сценарий полностью выполнен. "
Я могу не найти что не так. Может быть, это адрес каталога, который я даю в качестве параметра, или, может быть, это логика c моего скрипта. Я довольно потерян здесь, и любая помощь приветствуется.