Как перечислить все файлы в дереве (каталог и его поддиры)?

Вот сценарий python для выполнения задания:

#!/usr/bin/env python2
nums = set('7,152,13,11,42,5,7'.split(','))
with open('/path/to/file.txt') as f:
    f = enumerate(f, start=1)
    for i, line in f:
        if len(set.intersection(nums, set(line.split(',')))) >= 3:
            print str(i) + ': ' + line.rstrip()
set, nums будет содержать числа, которые мы хотим сопоставить. Мы создали объект enumerate для получить номер строки и выполнить итерацию по линиям set.intersection(nums, set(line.split(','))), мы получим общие числа среди nums и line. Если в строке if len(....) >= 3 есть 3 или более чисел из этой последовательности, тогда номер строки и строка будет напечатана.

Выход будет выглядеть следующим образом:

1: 7,152,13,11,42,5,45
2: 7,152,1,5,7,34,44
3: 7,152,13,11,42,5,7
5: 11,42,5,7,7,152,13

Также, учитывая, что числа не должны совпадать с указанным точным порядком, они могут быть в любом порядке.

37
задан 30 November 2010 в 03:28

82 ответа

Использование Krusader:

Использовать поиск (Ctl-S). Отметьте «поиск в подкаталогах». Нажмите «Поиск». Когда поиск завершен, нажмите «Подача в список».

Это позволит вам обрабатывать всю партию, перетаскивая ее на другую панель и т. д.

0
ответ дан 2 August 2018 в 04:13
find /path/ -printf "%TY-%Tm-%Td\t%s\t%p\n"

Вы можете играть с форматированием printf столько, сколько хотите. Это дает вам отличную возможность получить отформатированные файлы так, как вам нужно, что неоценимо, если вы используете вывод в другом приложении.

Подробнее: http://linux.about.com/od /commands/l/blcmdl1_find.htm

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

find /path/ -printf "%TY-%Tm-%Td\t%s\t%p\n" | column -t
24
ответ дан 2 August 2018 в 04:13
  • 1
    Или просто ls -R, если вам не нужны все детали. – Matthew Pirocchi 30 November 2010 в 09:09

вы можете поместить их в свой .bashrc-файл

function _get_tree(){ ls -alR | while read LINE; do echo $LINE | grep ":$" > /dev/null; if [ $? -eq 0 ]; then VAR=$(echo $LINE | grep ":$"| sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/' | tee /dev/tty); fi; echo $LINE | grep "^-" > /dev/null; if [ $? -eq 0 ]; then size=${#VAR}; for i in $(eval echo "{1..$size}"); do echo -n ' '; done; echo -n '..'; echo $LINE | cut -d ' ' -f9; fi; done; }; alias get_tree='_get_tree'

Теперь вы можете использовать команду get_tree внутри любого каталога и отображать всю иерархию.

Синтаксис: [ ! d2] $ get_tree

Выход образца:

. ..test.sh |-2 ..123.log |---3 |-----4 |-5 |---6

Надежда, это помогает !!

-1
ответ дан 2 August 2018 в 04:13
  • 1
    Не помогайте, если вы не объясните, что вы делаете. – Ron 22 July 2015 в 11:04
  • 2
    -1 Плохое форматирование кода, недостаточно объяснений. И почему вы делаете псевдоним? – wjandrea 29 December 2017 в 02:49
Дерево

будет очень удобно для вас.

sudo apt-get install tree

с помощью tree filepath для отображения файлов.

36
ответ дан 2 August 2018 в 04:13

Как ответил Оли, find позволит вам искать полное дерево каталогов:

find /path/ -printf "%TY-%Tm-%Td\t%s\t%p\n" # Where %TY will display the mod. time year as 4 digits # %Tm will display the mod. time month as 2 digits # %Td will display the mod. time day as 2 digits # %s displays the file size in bytes # %p displays the full path name of the file

Вы также можете использовать параметр -type f, чтобы ограничить результаты только файлами. Если вы хотите сопоставить шаблон файла, вам нужны опции -name или -iname (соответственно чувствительны к регистру и нечувствительны к регистру). Прочитайте man-страницу find - есть значительное количество опций, которые вы можете использовать для сужения / уточнения вашего поиска.

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

@Oli: +1 Я только что узнал что-то новое - column. Раньше не использовал это.

4
ответ дан 2 August 2018 в 04:13

Nautilus

Разрешить расширение подпапок в режиме просмотра списка 14.04 и 16.04 см. здесь. 17.10 и 18.04 см. здесь. Нажмите на папку и нажмите звездочку (* на цифровой клавиатуре или Shift + 8), чтобы разверните один уровень подкаталогов. Каждый раз, когда вы нажимаете звездочку, он будет расширять следующий уровень. Источник: ответ htorque здесь.

Это также работает в Nemo.

0
ответ дан 2 August 2018 в 04:13

вы можете поместить их в свой .bashrc файл

  function _get_tree () {ls -alR |  при чтении LINE;  сделать эхо $ LINE |  grep ": $" & gt;  / DEV / нуль;  если [$?  -eq 0];  то VAR = $ (echo $ LINE | grep ": $" | sed -e 's /: $ //' -e 's / [^ -] [^ \ /] * \ // - / g' -  e 's / ^ / /' -e 's / - / | /' | tee / dev / tty);  Fi;  echo $ LINE |  grep "^ -" & gt;  / DEV / нуль;  если [$?  -eq 0];  затем size = $ {# VAR};  для i в $ (eval echo "{1 .. $ size}");  do echo -n '';  сделанный;  echo -n '..';  echo $ LINE |  cut -d '' -f9;  Fi;  сделанный;  };  alias get_tree = '_ get_tree'  

Теперь вы можете использовать команду get_tree в любом каталоге и отображать всю иерархию.

Синтаксис:

  $ get_tree  

Результат выборки:

 .  ..test.sh | -2 ..123.log | --- 3 | ----- 4 | -5 | --- 6  

Надеюсь, это помогает!

-1
ответ дан 4 August 2018 в 20:18

tree будет очень удобно для вас.

  sudo apt-get установить дерево  

используя дерево filepath , чтобы просмотреть файлы.

36
ответ дан 4 August 2018 в 20:18

Как ответил Оли, find позволит вам искать полное дерево каталогов:

  find / path / -printf "% TY-% Tm-% Td  \ t% s \ t% p \n "# Где% TY покажет мод.  в качестве 4 цифр #% Tm будет отображаться мода.  месяц в виде 2 цифр #% Td отобразит мод.  2 дня #% s отображает размер файла в байтах #% p отображает полный путь к файлу  

Вы также можете использовать -тип f [ ! d2], чтобы ограничить результаты только файлами. Если вы хотите сопоставить шаблон файла, вам нужны опции -name или -iname (соответственно с учетом регистра и нечувствительность к регистру). Прочитайте man-страницу find - существует значительное количество опций, которые вы можете использовать для сужения / уточнения вашего поиска.

И как раз в сторону, если вы ожидают, что у вас будет отброшено несколько экранов данных, не забудьте передать ваши результаты через less .

@Oli: +1 Я только что узнал что-то новое - [ колонок . Раньше не использовал это.

4
ответ дан 4 August 2018 в 20:18

Nautilus

  1. Разрешить расширение вложенных папок в виде списка. Для 14.04 и 16.04 см. здесь . Для 17.10 и 18.04 см. здесь
  2. Нажмите на папку и нажмите звездочку (* на numpad или Shift + 8), чтобы развернуть один уровень подкаталогов. Каждый раз, когда вы нажимаете звездочку, он будет расширять следующий уровень. Источник: Ответ htorque здесь .

Это также работает в Nemo.

0
ответ дан 4 August 2018 в 20:18
  find / path / -printf "% TY-% Tm-% Td \ t% s \ t% p \n"  

Вы можете играть с форматированием printf сколько угодно. Это дает вам отличную возможность получить отформатированные данные так, как вам нужно, что неоценимо, если вы используете вывод в другом приложении.

Подробнее: http: //linux.about. com / od / commands / l / blcmdl1_find.htm

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

  find / path / -printf "% TY-% Tm-% Td \ t% s \ t% p \n" |  column -t  
24
ответ дан 4 August 2018 в 20:18

Использование Krusader:

  1. Использовать поиск (Ctl-S).
  2. Отключить поиск в подкаталогах.
  3. Нажмите «Поиск», .
  4. Когда поиск завершен, нажмите «Подача на список».

Это позволит вам обрабатывать всю партию, перетаскивая ее на другую панель и т. д. [ ! d6]

0
ответ дан 4 August 2018 в 20:18

Как насчет сценария Nautilus?

  #! / bin / bash # # АВТОР: (c) 2013 Glutanimate (https://askubuntu.com/users/81372) # NAME:  DirTree 0.1 # DEPENDENCIES: дерево zenity (установить с sudo apt-get установить zenity tree) # ЛИЦЕНЗИЯ: GNU GPL v3 (http://www.gnu.org/licenses/gpl.html) # # ОПИСАНИЕ: Создает дерево каталогов на  текущее местоположение.  Если вы хотите, чтобы вы # могли фильтровать вывод по шаблону (например, * .avi, чтобы включать только файлы avi #).  TITLE = DirTree # Получить рабочий каталог WORKINGDIR = "` python -c 'import gio, sys; print (gio.File (sys.argv [1]). Get_path ())' $ NAUTILUS_SCRIPT_CURRENT_URI` "# Время и дата TIME = $  (дата + "% Y-% m-% d_% H% M% S") # Фильтр zenity -question --title "$ TITLE" --text "Вы хотите фильтровать по определенному шаблону файла?"  если ["$?"  = "1"] then customtree = "tree" else PATTERN = $ (zenity -entry --title "$ TITLE" --text = "Введите шаблон файла (например, * .avi)"), если [-z "  $ PATTERN "], затем выйдите из else customtree =" tree -P $ PATTERN "fi fi # Дерево каталогов $ customtree" $ WORKINGDIR "& gt;  "$ WORKINGDIR / directorytree_ $ TIME.txt"  

Инструкции по установке: Как установить скрипт Nautilus?

0
ответ дан 4 August 2018 в 20:18

Я создал специально для этого программу - Снимок каталога . Он рекурсивно выполняет итерацию через каталог и сохраняет имена и размеры всех файлов и папок, с которыми он сталкивается в аккуратно структурированных HTML-файлах, которые имеют организацию, аналогичную организации входного каталога. Другими словами, это можно рассматривать как гиперссылку команд dir / s или tree / f .

0
ответ дан 4 August 2018 в 20:18

ls - стандартная команда для перечисления файлов в Ubuntu и других операционных системах Linux и Unix. ls особенно полезен, потому что вы найдете его в каждой системе Unix, которую вы когда-либо встречали. По умолчанию при запуске отображаются только файлы в текущем каталоге.

Однако флаг -R 'является рекурсивным вариантом (обратите внимание на капитал R , а не r ), который также покажет вам все подкаталоги.

Вы также запросили «детали» - для этого вам нужен флаг -l (это нижний регистр L, а не номер один). Помните, что это дает вам информацию о правах доступа к файлам, а также размер файла, информацию о времени / дате и имя файла.

Если вы хотите также показывать скрытые файлы / папки (эквивалент Ctrl + H в Nautilus), тогда добавьте флаг -a all.

Вы можете объединить флаги вместе, чтобы дать вам что-то вроде:

  ls -lR  

Если вы запустите это в любой папке с приличным размером, вы обнаружите, что это дает огромный длинный вывод, который быстро прокручивается по экрану. Чтобы обойти это, вы можете «вывести» вывод ls через программу с именем less (имя пародия на аналогичную больше который был вокруг первого, но имеет больше возможностей).

  ls -lR |  less  

Это позволит вам использовать клавиши со стрелками вверх / вниз вместе с параметром PageUp / Down, чтобы перейти через выход с более удобной скоростью.

3
ответ дан 4 August 2018 в 20:18

Nautilus

  1. Разрешить расширение вложенных папок в виде списка. Для 14.04 и 16.04 см. здесь . Для 17.10 и 18.04 см. здесь
  2. Нажмите на папку и нажмите звездочку (* на numpad или Shift + 8), чтобы развернуть один уровень подкаталогов. Каждый раз, когда вы нажимаете звездочку, он будет расширять следующий уровень. Источник: Ответ htorque здесь .

Это также работает в Nemo.

0
ответ дан 6 August 2018 в 04:18

вы можете поместить их в свой .bashrc файл

  function _get_tree () {ls -alR |  при чтении LINE;  сделать эхо $ LINE |  grep ": $" & gt;  / DEV / нуль;  если [$?  -eq 0];  то VAR = $ (echo $ LINE | grep ": $" | sed -e 's /: $ //' -e 's / [^ -] [^ \ /] * \ // - / g' -  e 's / ^ / /' -e 's / - / | /' | tee / dev / tty);  Fi;  echo $ LINE |  grep "^ -" & gt;  / DEV / нуль;  если [$?  -eq 0];  затем size = $ {# VAR};  для i в $ (eval echo "{1 .. $ size}");  do echo -n '';  сделанный;  echo -n '..';  echo $ LINE |  cut -d '' -f9;  Fi;  сделанный;  };  alias get_tree = '_ get_tree'  

Теперь вы можете использовать команду get_tree в любом каталоге и отображать всю иерархию.

Синтаксис:

  $ get_tree  

Результат выборки:

 .  ..test.sh | -2 ..123.log | --- 3 | ----- 4 | -5 | --- 6  

Надеюсь, это помогает!

-1
ответ дан 6 August 2018 в 04:18

tree будет очень удобно для вас.

  sudo apt-get установить дерево  

используя дерево filepath , чтобы просмотреть файлы.

36
ответ дан 6 August 2018 в 04:18

Как ответил Оли, find позволит вам искать полное дерево каталогов:

  find / path / -printf "% TY-% Tm-% Td  \ t% s \ t% p \n "# Где% TY покажет мод.  в качестве 4 цифр #% Tm будет отображаться мода.  месяц в виде 2 цифр #% Td отобразит мод.  2 дня #% s отображает размер файла в байтах #% p отображает полный путь к файлу  

Вы также можете использовать -тип f [ ! d2], чтобы ограничить результаты только файлами. Если вы хотите сопоставить шаблон файла, вам нужны опции -name или -iname (соответственно с учетом регистра и нечувствительность к регистру). Прочитайте man-страницу find - существует значительное количество опций, которые вы можете использовать для сужения / уточнения вашего поиска.

И как раз в сторону, если вы ожидают, что у вас будет отброшено несколько экранов данных, не забудьте передать ваши результаты через less .

@Oli: +1 Я только что узнал что-то новое - [ колонок . Раньше не использовал это.

4
ответ дан 6 August 2018 в 04:18
  find / path / -printf "% TY-% Tm-% Td \ t% s \ t% p \n"  

Вы можете играть с форматированием printf сколько угодно. Это дает вам отличную возможность получить отформатированные данные так, как вам нужно, что неоценимо, если вы используете вывод в другом приложении.

Подробнее: http: //linux.about. com / od / commands / l / blcmdl1_find.htm

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

  find / path / -printf "% TY-% Tm-% Td \ t% s \ t% p \n" |  column -t  
24
ответ дан 6 August 2018 в 04:18

Я создал специально для этого программу - Снимок каталога . Он рекурсивно выполняет итерацию через каталог и сохраняет имена и размеры всех файлов и папок, с которыми он сталкивается в аккуратно структурированных HTML-файлах, которые имеют организацию, аналогичную организации входного каталога. Другими словами, это можно рассматривать как гиперссылку команд dir / s или tree / f .

0
ответ дан 6 August 2018 в 04:18

Как насчет сценария Nautilus?

  #! / bin / bash # # АВТОР: (c) 2013 Glutanimate (https://askubuntu.com/users/81372) # NAME:  DirTree 0.1 # DEPENDENCIES: дерево zenity (установить с sudo apt-get установить zenity tree) # ЛИЦЕНЗИЯ: GNU GPL v3 (http://www.gnu.org/licenses/gpl.html) # # ОПИСАНИЕ: Создает дерево каталогов на  текущее местоположение.  Если вы хотите, чтобы вы # могли фильтровать вывод по шаблону (например, * .avi, чтобы включать только файлы avi #).  TITLE = DirTree # Получить рабочий каталог WORKINGDIR = "` python -c 'import gio, sys; print (gio.File (sys.argv [1]). Get_path ())' $ NAUTILUS_SCRIPT_CURRENT_URI` "# Время и дата TIME = $  (дата + "% Y-% m-% d_% H% M% S") # Фильтр zenity -question --title "$ TITLE" --text "Вы хотите фильтровать по определенному шаблону файла?"  если ["$?"  = "1"] then customtree = "tree" else PATTERN = $ (zenity -entry --title "$ TITLE" --text = "Введите шаблон файла (например, * .avi)"), если [-z "  $ PATTERN "], затем выйдите из else customtree =" tree -P $ PATTERN "fi fi # Дерево каталогов $ customtree" $ WORKINGDIR "& gt;  "$ WORKINGDIR / directorytree_ $ TIME.txt"  

Инструкции по установке: Как установить скрипт Nautilus?

0
ответ дан 6 August 2018 в 04:18

Использование Krusader:

  1. Использовать поиск (Ctl-S).
  2. Отключить поиск в подкаталогах.
  3. Нажмите «Поиск», .
  4. Когда поиск завершен, нажмите «Подача на список».

Это позволит вам обрабатывать всю партию, перетаскивая ее на другую панель и т. д. [ ! d6]

0
ответ дан 6 August 2018 в 04:18

ls - стандартная команда для перечисления файлов в Ubuntu и других операционных системах Linux и Unix. ls особенно полезен, потому что вы найдете его в каждой системе Unix, которую вы когда-либо встречали. По умолчанию при запуске отображаются только файлы в текущем каталоге.

Однако флаг -R 'является рекурсивным вариантом (обратите внимание на капитал R , а не r ), который также покажет вам все подкаталоги.

Вы также запросили «детали» - для этого вам нужен флаг -l (это нижний регистр L, а не номер один). Помните, что это дает вам информацию о правах доступа к файлам, а также размер файла, информацию о времени / дате и имя файла.

Если вы хотите также показывать скрытые файлы / папки (эквивалент Ctrl + H в Nautilus), тогда добавьте флаг -a all.

Вы можете объединить флаги вместе, чтобы дать вам что-то вроде:

  ls -lR  

Если вы запустите это в любой папке с приличным размером, вы обнаружите, что это дает огромный длинный вывод, который быстро прокручивается по экрану. Чтобы обойти это, вы можете «вывести» вывод ls через программу с именем less (имя пародия на аналогичную больше который был вокруг первого, но имеет больше возможностей).

  ls -lR |  less  

Это позволит вам использовать клавиши со стрелками вверх / вниз вместе с параметром PageUp / Down, чтобы перейти через выход с более удобной скоростью.

3
ответ дан 6 August 2018 в 04:18

tree будет очень удобно для вас.

  sudo apt-get установить дерево  

используя дерево filepath , чтобы просмотреть файлы.

36
ответ дан 7 August 2018 в 22:22

Как ответил Оли, find позволит вам искать полное дерево каталогов:

  find / path / -printf "% TY-% Tm-% Td  \ t% s \ t% p \n "# Где% TY покажет мод.  в качестве 4 цифр #% Tm будет отображаться мода.  месяц в виде 2 цифр #% Td отобразит мод.  2 дня #% s отображает размер файла в байтах #% p отображает полный путь к файлу  

Вы также можете использовать -тип f [ ! d2], чтобы ограничить результаты только файлами. Если вы хотите сопоставить шаблон файла, вам нужны опции -name или -iname (соответственно с учетом регистра и нечувствительность к регистру). Прочитайте man-страницу find - существует значительное количество опций, которые вы можете использовать для сужения / уточнения вашего поиска.

И как раз в сторону, если вы ожидают, что у вас будет отброшено несколько экранов данных, не забудьте передать ваши результаты через less .

@Oli: +1 Я только что узнал что-то новое - [ колонок . Раньше не использовал это.

4
ответ дан 7 August 2018 в 22:22

Nautilus

  1. Разрешить расширение вложенных папок в виде списка. Для 14.04 и 16.04 см. здесь . Для 17.10 и 18.04 см. здесь
  2. Нажмите на папку и нажмите звездочку (* на numpad или Shift + 8), чтобы развернуть один уровень подкаталогов. Каждый раз, когда вы нажимаете звездочку, он будет расширять следующий уровень. Источник: Ответ htorque здесь .

Это также работает в Nemo.

0
ответ дан 7 August 2018 в 22:22

Я создал специально для этого программу - Снимок каталога . Он рекурсивно выполняет итерацию через каталог и сохраняет имена и размеры всех файлов и папок, с которыми он сталкивается в аккуратно структурированных HTML-файлах, которые имеют организацию, аналогичную организации входного каталога. Другими словами, это можно рассматривать как гиперссылку команд dir / s или tree / f .

0
ответ дан 7 August 2018 в 22:22

Как насчет сценария Nautilus?

  #! / bin / bash # # АВТОР: (c) 2013 Glutanimate (https://askubuntu.com/users/81372) # NAME:  DirTree 0.1 # DEPENDENCIES: дерево zenity (установить с sudo apt-get установить zenity tree) # ЛИЦЕНЗИЯ: GNU GPL v3 (http://www.gnu.org/licenses/gpl.html) # # ОПИСАНИЕ: Создает дерево каталогов на  текущее местоположение.  Если вы хотите, чтобы вы # могли фильтровать вывод по шаблону (например, * .avi, чтобы включать только файлы avi #).  TITLE = DirTree # Получить рабочий каталог WORKINGDIR = "` python -c 'import gio, sys; print (gio.File (sys.argv [1]). Get_path ())' $ NAUTILUS_SCRIPT_CURRENT_URI` "# Время и дата TIME = $  (дата + "% Y-% m-% d_% H% M% S") # Фильтр zenity -question --title "$ TITLE" --text "Вы хотите фильтровать по определенному шаблону файла?"  если ["$?"  = "1"] then customtree = "tree" else PATTERN = $ (zenity -entry --title "$ TITLE" --text = "Введите шаблон файла (например, * .avi)"), если [-z "  $ PATTERN "], затем выйдите из else customtree =" tree -P $ PATTERN "fi fi # Дерево каталогов $ customtree" $ WORKINGDIR "& gt;  "$ WORKINGDIR / directorytree_ $ TIME.txt"  

Инструкции по установке: Как установить скрипт Nautilus?

0
ответ дан 7 August 2018 в 22:22

Использование Krusader:

  1. Использовать поиск (Ctl-S).
  2. Отключить поиск в подкаталогах.
  3. Нажмите «Поиск», .
  4. Когда поиск завершен, нажмите «Подача на список».

Это позволит вам обрабатывать всю партию, перетаскивая ее на другую панель и т. д. [ ! d6]

0
ответ дан 7 August 2018 в 22:22

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

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