Как перебирать каждый файл в каталоге, если и только если каталог содержит файлы .csv?

Это условие "ИЛИ".

Для упрощенного примера давайте посмотрим на

 cmd1 || cmd2

Что произойдет, если cmd1 будет успешной (т.е. код выхода 0), то cmd2 НЕ будет выполнена. cmd2 будет выполнена только в том случае, если cmd1 будет неудачной.

Это одна из причин, по которой возврат кодов выхода так важен.

BTW, эта функция присутствовала в очень старых UNIX оболочках, так как в старом sh. не было выражений IF. Конечно, это было еще до того, как существовал csh.

0
14.10.2015, 12:25
2 ответа
perl -pe 'printf "%d ", .5+$./2'
-121--228821-

Пока что для меня сработало просто найти файл /lib/udev/rules.d/97-hid2hci.rules .

Найдите эту запись и прокомментируйте ее:

    # Logitech devices
    KERNEL=="hiddev*", ATTRS{idVendor}=="046d",
    ATTRS{idProduct}=="c70[345abce]|c71[3bc]", \
    RUN+="hid2hci --method=logitech-hid --devpath=%p"

Она должна выглядеть следующим образом.

    # Logitech devices
    #KERNEL=="hiddev*", ATTRS{idVendor}=="046d", 
    ATTRS{idProduct}=="c70[345abce]|c71[3bc]", \
    #  RUN+="hid2hci --method=logitech-hid --devpath=%p

Сохраните файл, отключите и повторно подключите приемник, он работает нормально.

Единственная проблема, которую я вижу, заключается в том, что она может быть перезаписана в обновлениях. Мне еще предстоит найти лучшее решение.

-121--151149-
for csvfile in */*.csv
do
    echo "Processing $csvfile"
done

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

0
28.01.2020, 04:54

Используйте это:

find dir1/ -maxdepth 1 -type f -iname "*.csv" -print0 | while IFS= read -r -d '' f; do
  # process file
  echo "$f"
done
  • find ищет только файлы (-type f) с окончанием .csv (-iname "*.csv"), только в dir1 и не в его подкаталогах (-maxdepth 1). Имена файлов печатаются разделенными нулевым символом (-print0), чтобы справиться со специальными именами файлов.
  • Цикл while считывает входные данные, разделенные нулевым символом, и сохраняет имя файла в переменной $f.
0
28.01.2020, 04:54

Теги

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