Если каталог является файлом, могу ли я увидеть его содержимое? [дубликат]

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

t=$(mktemp)
find /tmp/test -name "*.txt" -exec sh -c '
    if [ -s $1 ]
    then
        ./thulac < "$(<$1)" > "/mnt/tokenized/$2"
    else
        printf "%s" "$2" > "$1"
    fi' sh $t {} \;
rm $t

Если вы просто хочу передать путь и имя файла каждого найденного файла, ответ проще, по-прежнему только с использованием переносимых команд и синтаксиса (POSIX), то есть не зависит от bash, GNU find и GNU xargs:

find /tmp/test -name "*.txt" -exec sh -c '
    ./thulac < "$1" > "/mnt/tokenized/$(basename "$1")"' sh {} \;

Обратите внимание, что { } нужно заключать в кавычки только при использовании оболочки fish, что очень маловероятно.

1
30.10.2016, 06:32
1 ответ

Вы можете сделать это просто с помощью Vim

0
28.01.2020, 01:08

Теги

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