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

На этот вопрос нельзя ответить простым способом, но здесь вы найдете очень хороший учебник.

1
задан 9 August 2013 в 09:03

2 ответа

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

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

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

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

#!/bin/python
f = open("/path/to/master.txt","r+")
paths = [x.split("/",3)[-1] + " -1" for x in f.readlines()]
f.seek(0)
f.write("".join(paths))
f.truncate()
f.close()

Немного усеченная версия Ответ напогео:

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

2
ответ дан 24 May 2018 в 19:14
  • 1
    Я, наконец, смог это сделать, используя Найти , на самом деле мне не нужен полный путь, но с использованием awk было достаточно, чтобы просто показать путь из «geo». подкаталог. вот как я это сделал: Ребятам я, наконец, удалось выполнить задачу, используя команду Locate locate ~/Documents/rawdata/*/datalist.mb-1 | awk 'BEGIN {FS="/"} {print $4 "/" $5 " -1"}' > master.txt – napogeof 9 August 2013 в 23:20
  • 2
    Вы должны опубликовать это как ответ. Я уверен, что многие люди посчитают это полезным. – Bryan 9 August 2013 в 23:53

Untested

Вы можете использовать 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
ответ дан 24 May 2018 в 19:14

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

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