Если нет пробелов в файлах в каталоге:
#!/bin/bash
SOURCE="/Volumes/Time Machine Backups/Backups.backupdb/Zaphod"
cd "$SOURCE"
for file in $(ls -d./201*)
do
echo "File: $file"
done
если вы не уверены, есть пробелы в списке каталогов или нет, сделайте это вместо этого:
#!/bin/bash
SOURCE="/Volumes/Time Machine Backups/Backups.backupdb/Zaphod"
cd "$SOURCE"
shopt -s nullglob
for filename in 201*;do
if [[ ! -d "$filename" ]];then
echo "$filename"
fi
done
shopt -u nullglob
Я не понимаю, нужны ли вам имена файлов каталогов или нет, если нет, то это то, что работает.
Второе обычно является предпочтительным решением, когда вы не знаете, есть пробелы или нет, как мне кажется.
awk -F',' '$2 ~ /^Apple$/ {++count} $3 ~ /^Apple$/ {++count} END{print count}' Dataset.csv
или, поскольку вам нужно точное совпадение, вместо~
:
==
. awk -F',' '$2 == "Apple" {++count} $3 == "Apple" {++count} END{print count}' Dataset.csv
Это увеличит count
, если оно найдено в либо $2
, либо $3
.
Если вы хотите увеличить count
, только если он найден в обоих, используйте:
awk -F',' '$2 ~ /^Apple$/ && $3 ~ /^Apple$/ {++count} END{print count}' Dataset.csv
awk -F',' '$2 == "Apple" && $3 == "Apple" {++count} END{print count}' Dataset.csv
или (объединение обоих полей для соответствия И строки x 2):
awk -F',' '$2$3 ~ /^AppleApple$/ {++count} END{print count}' Dataset.csv
awk -F',' '$2$3 == "AppleApple" {++count} END{print count}' Dataset.csv
Использование awk с разделителем полей, установленным в соответствии с шаблоном поиска:
awk -F'Apple' '{count+=NF-1}END{print count}' file
Переменная count
увеличивается с количеством полей и печатается в конце файла.
Альтернатива, использующая GNU awk, необходимая для использования RS в качестве регулярного выражения (границы слова, спасибо @cas):
awk -v RS='\\<Apple\\>' 'END{print NR-1}' file
Это просто проверяет, сколько записей NR
найдено в файле.