создать список файлов, расположенных в нескольких каталогах

У меня есть набор файлов данных (*.all), расположенных в разных папках

Documents/rawdata/Geob1005/1.all, 2.all, 3.all,...,n.all
Documents/rawdata/Geob1006/A.all, B.all, C.all,...,Z.all          and so on...

Я создал файл с именем datalist.mb-1 в каждом каталоге, в котором перечислены все файлы *.all, расположенные в тот же каталог, используя:

/bin/ls -1 *.all | awk '{print $1" 58"}' >datalist.mb-1

, так что я получаю это:

Documents/rawdata/Geob1005/datalist.mb-1
Documents/rawdata/Geob1006/datalist.mb-1
and so on...

Теперь мне нужно создать «главный» список данных в Documents/rawdata/, который будет указывать на все другие даталисты внутри каталогов rawdata/

мне нужно, чтобы результаты «основного» специалиста по данным выглядели так:

Geob1005/datalist.mb-1  -­1 
Geob1006/datalist.mb-1  -1  

Есть идеи, как выполнить эту задачу?

[ 1115] Заранее спасибо.

4
задан 9 August 2013 в 08:03

3 ответа

Мне, наконец, удалось сделать это с помощью Locate, на самом деле мне не нужен был полный путь, но использования awk было достаточно, чтобы просто показать путь из подкаталога «geo».

Вот как я это сделал:

locate ~/Documents/rawdata/*/datalist.mb-1 | awk 'BEGIN {FS="/"} {print $4 "/" $5 " -1"}' > master.txt

0
ответ дан 9 August 2013 в 08:03

Очень простой способ сделать это - использовать команду locate следующим образом:

locate Documents/rawdata/Geob*/datalist.mb-1 > master.txt

То есть, если полные пути в порядке.

Однако, если вам нужен формат, который вы описали выше, только с подкаталогом «geo» и файлом, вы можете использовать простой маленький скрипт на python, такой как этот: :

locate ~/Documents/rawdata/*/datalist.mb-1 | awk -F/ '{print $4 "/" $5 " -1"}' > master.txt

0
ответ дан 9 August 2013 в 08:03

Не проверено

Вы можете использовать bash, чтобы составить список всех файлов в одном файле .txt (просто используйте команду find, чтобы найти файлы «datalist») а затем труба, что файл).

В python вы можете использовать этот список файлов (например, datalist_master.txt) следующим образом:

fi = file.open('datalist_master.txt', 'r')
li = fi.readlines()
new_li = []    

for element in li:
    # get rid of unnecessary path info
    element = element.lstrip('Documents/rawdata/')

    # add last two digits 
    element = element + ' ' + element[-2:]
    new_li.append(element)

fi.close()
print new_li #or save it somewhere

Это наверняка также возможно в bash (но я не знаю как) .

0
ответ дан 9 August 2013 в 08:03

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

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