Получить список файлов с двумя расширениями, такими как deb|rpm|txt

На самом деле вы не показываете, как вы добавляете регулярное выражение, поэтому я предполагаю, что вы используете тот же формат:=~ [A-Za-z]. Это не сработает. Каждый язык имеет свой собственный синтаксис для сопоставления регулярных выражений. В awkиспользуется формат $target ~ /$regex/, поэтому $1 ~ /[A-Za-z]/.

BEGIN { FS = ";"; counter=0}

{ 
 if (length($1) != 10 && length($1) != 12 && $1 ~ /[A-Za-z]/)
   { 
    counter++
    print counter, $1;
    if (counter > 2){
        print "Invalid input file";
        exit;
    }    
   }
}

Также в awk,знак $используется для обозначения полей , а не переменных . Таким образом, $counterбудет оцениваться как номер поля counter. Если counterравно 2, то $counterбудет значением второго поля. И -gtтоже не ахти. Просто используйте >.

2
22.09.2020, 16:58
2 ответа

Вы можете указать столько расширений, сколько хотите, просто перечислите их отдельно. Например.:

* */1 * * * cd /home/alexalannunes/Downloads && ls *.deb *.rpm > log.txt && rm  *.deb *.rpm
5
18.03.2021, 23:03

Если оболочка поддерживает раскрытие фигурных скобок, в котором работает crontab, вы можете указать несколько расширений, используя раскрытие скобок:

*.{rpm,deb,other_file}

В противном случае просто соедините несколько расширений.

*.rpm *.deb

Кроме того, вам не нужен отдельный ls, rmимеет подробный вывод с -v, и вы должны добавить -f, чтобы игнорировать несуществующие файлы и аргументы и никогда не запрашивать.

* */1 * * * rm -fv /home/alexalannunes/Downloads/*.{deb,rpm} > log.txt

или

* */1 * * * rm -fv /home/alexalannunes/Downloads/*.deb /home/alexalannunes/Downloads/*.rpm > log.txt
4
18.03.2021, 23:03

Теги

Похожие вопросы