цикл через все файлы в папке [duplicate]

У меня была такая же проблема с Rubymine, где я не смог скопировать Rubyine и вставить в терминал с CTRL-SHIFT-V. Учитывая, что я делаю это десятки раз в день, у меня мало интересовалось копирование в gedit каждый раз, а затем копирование на терминал, поэтому я выяснил решение, которое этого не требует:

http: // www.williambharding.com/blog/technology/fix-it-ubuntu-ctrl-shift-v-wont-paste-into-terminal/

Рассказ: OpenJDK не играет хорошо с буфером обмена. Я предполагаю, что это применимо к Netbeans, а также к Rubymine, поскольку они запускаются через виртуальную машину Java.

1
задан 27 September 2015 в 10:35

1 ответ

Прежде всего, не разбирайте ls. Теперь причина, по которой ваш скрипт терпит неудачу, заключается в том, что вы проходите "$PWD/*". Поскольку это приостановлено, оно будет расширено до того, как оно будет передано вашей функции в /path/to/dir/*, и поскольку в вашем PWD нет файла с именем *, он не работает.

Однако, даже если бы это сработало, это привело бы вас в бесконечный цикл.

То, что вы ищете, это:

#!/bin/bash

function loop() {
    ## Do nothing if * doesn't match anything.
    ## This is needed for empty directories, otherwise
    ## "foo/*" expands to the literal string "foo/*"/
    shopt -s nullglob

    for file in $1
    do
    ## If $file is a directory
    if [ -d "$file" ]
    then
            echo "looping for $file"
        loop "$file/*"
    else
            echo "$file"
    fi
    done
}
loop "$PWD/*"

однако, не удастся, если ваш PWD содержит пробельные символы. Более безопасный способ:

#!/bin/bash

function loop() {
    ## Do nothing if * doesn't match anything.
    ## This is needed for empty directories, otherwise
    ## "foo/*" expands to the literal string "foo/*"/
    shopt -s nullglob

    ## Make ** recurse into subdirectories
    shopt -s globstar

    for file in "$@"/**
    do
    ## If $file is a file
    if [ -f "$file" ]
    then
        echo "$file"
    fi
    done
}
loop "$PWD"
5
ответ дан 23 May 2018 в 17:08

Другие вопросы по тегам:

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