Я на машине с Windows. Однако я установил Cygwin и обновил путь к переменным среды, который позволяет мне запускать команды Linux через терминал Windows.

Я хотел бы выполнить следующую команду:

wc -l * > total 

во многих папках. Моя установка такова:

Родительская папка имеет 24 подпапки, каждая из которых называется PKA1, PKA2 и т.д., Вплоть до PKA24

Я хочу войти в каждую подпапку. Но в каждой подпапке мне нужно идти дальше. Мне нужно пройти еще три уровня (только одна подпапка в каждом каталоге на данный момент), но путь выглядит так:

PKA1/timestep_size/v_0.001/500eV

Затем в каждой подпапке на этой глубине есть 4 папки:

O1
O3
Si3
Si5

Я хотел бы войти в каждый из них и выполнить мою команду. Есть ли быстрый способ сделать это?

2 ответа2

1

Если вы знаете, сколько есть вложенных папок, вы можете попробовать

wc -l * > file
wc -l */* >> file
wc -l */*/* >> file

и т.п.

0

Используйте цикл FOR.

Из вашей родительской папки выполните:

FOR /R %G IN (*) DO wc -l %G >>total

Это должна сделать команда для каждого файла в этом каталоге.

Ключ /R заставляет его проходить через каждый файл и добавляет >> вместо того, чтобы перезаписывать вывод в ваш файл.

Больше информации:

http://ss64.com/nt/for_r.html http://ss64.com/nt/syntax-redirection.html

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