Как я могу рекурсивно перечислить Md5sum всех файлов в каталоге и его подкаталогах? [dубликат]

Вывести команды в файл из crontab, а затем tail -f файл для контроля вывода.

6
задан 23 April 2017 в 10:22

8 ответов

Вы можете использовать find (в каталоге)

find -type f -exec md5sum '{}' \; > md5sum.txt

Если вы хотите исключить сам файл md5sum.txt, вы можете сделать это:

find -type f \( -not -name "md5sum.txt" \) -exec md5sum '{}' \; > md5sum.txt
[d2 ] Вы также можете использовать цикл: включить рекурсивное globbing

shopt -s globstar

Затем в каталоге:

for i in **; do [[ -f "$i" ]] && md5sum "$i" >> md5sum.txt; done

Вы также можете исключить сам файл из этого:

for i in **; do 
  [[ -f "$i" ]] && 
  [[ md5sum.txt != "$i" ]] && 
  md5sum "$i" >> md5sum.txt
done

Ни одна из них не создает структуру, похожую на tree. Но они печатают относительный путь к файлу из стартового каталога. Если вы хотите абсолютный путь, используйте find /path/to/directory ...

После этого вы можете отключить globstar (shopt -u globstar)

10
ответ дан 22 May 2018 в 23:19
  • 1
    это также создает md5sum самого файла md5sum.txt. было бы неплохо, если бы не – Anwar 23 April 2017 в 09:51
  • 2
    @Anwar см. Править для немного громоздкого исключения ^ _ ^ – Zanna 23 April 2017 в 09:55
  • 3
    Ах! видел это. Я лучше одной строки в огромном md5sum.txt, а затем еще 5 строк кода. В любом случае, спасибо – Anwar 23 April 2017 в 10:02
  • 4
    всегда может: " & gt; & gt; & gt; ../md5sum.txt" для обеспечения того, чтобы файл не включался в результат – user1985553 11 February 2018 в 00:25
  • 5
    Для двоичных файлов не забудьте добавить -b после команды md5sum. – Roland Pihlakas 13 May 2018 в 17:16

Вы можете использовать find (в каталоге)

find -type f -exec md5sum '{}' \; > md5sum.txt

Если вы хотите исключить сам файл md5sum.txt, вы можете сделать это:

find -type f \( -not -name "md5sum.txt" \) -exec md5sum '{}' \; > md5sum.txt

Вы также можете использовать цикл: включить рекурсивное globbing

shopt -s globstar

Затем в каталоге:

for i in **; do [[ -f "$i" ]] && md5sum "$i" >> md5sum.txt; done

Вы также можете исключить сам файл из этого:

for i in **; do [[ -f "$i" ]] && [[ md5sum.txt != "$i" ]] && md5sum "$i" >> md5sum.txt done

Ни одна из них не создает структуру, похожую на tree. Но они печатают относительный путь к файлу из стартового каталога. Если вы хотите абсолютный путь, используйте find /path/to/directory ...

После этого вы можете отключить globstar (shopt -u globstar)

11
ответ дан 18 July 2018 в 14:26

Вы можете использовать find (в каталоге)

find -type f -exec md5sum '{}' \; > md5sum.txt

Если вы хотите исключить сам файл md5sum.txt, вы можете сделать это:

find -type f \( -not -name "md5sum.txt" \) -exec md5sum '{}' \; > md5sum.txt

Вы также можете использовать цикл: включить рекурсивное globbing

shopt -s globstar

Затем в каталоге:

for i in **; do [[ -f "$i" ]] && md5sum "$i" >> md5sum.txt; done

Вы также можете исключить сам файл из этого:

for i in **; do [[ -f "$i" ]] && [[ md5sum.txt != "$i" ]] && md5sum "$i" >> md5sum.txt done

Ни одна из них не создает структуру, похожую на tree. Но они печатают относительный путь к файлу из стартового каталога. Если вы хотите абсолютный путь, используйте find /path/to/directory ...

После этого вы можете отключить globstar (shopt -u globstar)

11
ответ дан 24 July 2018 в 20:23

Вы можете использовать find (в каталоге)

find -type f -exec md5sum '{}' \; > md5sum.txt

Если вы хотите исключить сам файл md5sum.txt, вы можете сделать это:

find -type f \( -not -name "md5sum.txt" \) -exec md5sum '{}' \; > md5sum.txt

Вы также можете использовать цикл: включить рекурсивное globbing

shopt -s globstar

Затем в каталоге:

for i in **; do [[ -f "$i" ]] && md5sum "$i" >> md5sum.txt; done

Вы также можете исключить сам файл из этого:

for i in **; do [[ -f "$i" ]] && [[ md5sum.txt != "$i" ]] && md5sum "$i" >> md5sum.txt done

Ни одна из них не создает структуру, похожую на tree. Но они печатают относительный путь к файлу из стартового каталога. Если вы хотите абсолютный путь, используйте find /path/to/directory ...

После этого вы можете отключить globstar (shopt -u globstar)

11
ответ дан 31 July 2018 в 11:17

Вы можете выполнить следующую команду:

md5sum /path/to/directory/* > /path_to_result/md5sum.txt

Результат в файле результатов будет примерно таким:

46684e3891d990acde2e723ee3d4e94a  /var/log/alternatives.log
39cf1ebf93452ed5f8b240b35ae73f9f  /var/log/alternatives.log.1
aa6c09c411d1d0870bca5f401d589332  /var/log/alternatives.log.2.gz
2
ответ дан 22 May 2018 в 23:19
  • 1
    Не работает, если есть каталог. Говорит md5sum: /path_to_dir: Is a directory – Anwar 23 April 2017 в 09:53
  • 2
    @Anwar running md5sum /path_to_dir/* выполнит md5sum для каждого файла в каталоге – Yaron 23 April 2017 в 10:23
  • 3
    Как насчет других файлов внутри подкаталогов? – Anwar 23 April 2017 в 10:25
  • 4
    @Anwar - он не будет работать в подкаталогах (который был определен как приятный, чтобы иметь в вопросе) – Yaron 23 April 2017 в 10:27
  • 5
    но я вижу, что это добавлено в издание, это своего рода важный – Anwar 23 April 2017 в 10:32

Вы можете выполнить следующую команду:

md5sum /path/to/directory/* > /path_to_result/md5sum.txt

Результат в файле результатов будет примерно таким:

46684e3891d990acde2e723ee3d4e94a /var/log/alternatives.log 39cf1ebf93452ed5f8b240b35ae73f9f /var/log/alternatives.log.1 aa6c09c411d1d0870bca5f401d589332 /var/log/alternatives.log.2.gz
2
ответ дан 18 July 2018 в 14:26

Вы можете выполнить следующую команду:

md5sum /path/to/directory/* > /path_to_result/md5sum.txt

Результат в файле результатов будет примерно таким:

46684e3891d990acde2e723ee3d4e94a /var/log/alternatives.log 39cf1ebf93452ed5f8b240b35ae73f9f /var/log/alternatives.log.1 aa6c09c411d1d0870bca5f401d589332 /var/log/alternatives.log.2.gz
2
ответ дан 24 July 2018 в 20:23
  • 1
    Не работает, если есть каталог. Говорит md5sum: /path_to_dir: Is a directory – Anwar 23 April 2017 в 09:53
  • 2
    @Anwar running md5sum /path_to_dir/* выполнит md5sum для каждого файла в каталоге – Yaron 23 April 2017 в 10:23
  • 3
    Как насчет других файлов внутри подкаталогов? – Anwar 23 April 2017 в 10:25
  • 4
    @Anwar - он не будет работать в подкаталогах (который был определен как приятный, чтобы иметь в вопросе) – Yaron 23 April 2017 в 10:27
  • 5
    но я вижу, что это добавлено в издание, это своего рода важный – Anwar 23 April 2017 в 10:32

Вы можете выполнить следующую команду:

md5sum /path/to/directory/* > /path_to_result/md5sum.txt

Результат в файле результатов будет примерно таким:

46684e3891d990acde2e723ee3d4e94a /var/log/alternatives.log 39cf1ebf93452ed5f8b240b35ae73f9f /var/log/alternatives.log.1 aa6c09c411d1d0870bca5f401d589332 /var/log/alternatives.log.2.gz
2
ответ дан 31 July 2018 в 11:17
  • 1
    Не работает, если есть каталог. Говорит md5sum: /path_to_dir: Is a directory – Anwar 23 April 2017 в 09:53
  • 2
    @Anwar running md5sum /path_to_dir/* выполнит md5sum для каждого файла в каталоге – Yaron 23 April 2017 в 10:23
  • 3
    Как насчет других файлов внутри подкаталогов? – Anwar 23 April 2017 в 10:25
  • 4
    @Anwar - он не будет работать в подкаталогах (который был определен как приятный, чтобы иметь в вопросе) – Yaron 23 April 2017 в 10:27
  • 5
    но я вижу, что это добавлено в издание, это своего рода важный – Anwar 23 April 2017 в 10:32

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

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