2

Я должен объединить несколько файлов в структуре каталогов, которая содержит пробелы в именах папок, выглядящих так:./CH 0000100014/A10/11XT/11xt # 001.csv

find . -name "*.csv" -type f -print0 | xargs -0  cat > allmycsv.txt

выполняет работу, однако теперь мне нужно включить информацию, содержащуюся в пути, т.е. CH 0000100014/A10/11XT в качестве заголовка каждого входного файла для cat.

find . -name "*.csv" -type f -print0 | xargs -0 -I % sh -c 'echo %; cat %' >allmycsv.txt

сделал бы эту работу, если бы у меня не было пробелов в пути, но в моем случае cat не ладит с пробелом в имени пути. Есть ли выход?

Ура, E

PS я работаю над Bash на OSX

2 ответа2

1

Вы можете прочитать список файлов в цикле while (см. BashFAQ # 020):

find . -name "*.csv" -type f -print0 | while IFS= read -d $'\0' -r file ; do
    echo "$file"
    cat "$file"
done >allmycsv.txt
0

Попробуйте добавить символы двойной кавычки вокруг символов%:

sh -c 'echo " % " ; кот " % " '

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .