6

У меня есть 2000 текстовых файлов, которые мне нужно прочитать в первой строке (она должна содержать имя человека).

В идеале я хотел бы иметь электронную таблицу / CSV с

FILENAME, FIRST LINE OF FILE

2 ответа2

3

Под Windows вы можете сделать это с помощью командного файла:

@echo off
setlocal enabledelayedexpansion

set OUTPUT=names.csv
del %OUTPUT% > nul 2>&1

for %%f in (*.txt) do (
    set /p NAME=< %%f
    echo %%f,!NAME! >> %OUTPUT%
)

endlocal

Если вы хотите, чтобы имя файла без расширения, измените цикл for следующим образом:

for %%f in (*.txt) do (
    set /p NAME=< %%f
    set INPUT=%%f
    echo !INPUT:~0,-4!, !NAME! >> %OUTPUT%
)
1

Лучшее, что я придумал, было

$ perl -e 'for(@ARGV){open($f,"<",$_);print"$_,",scalar<$f>}' *.txt
aaa.txt,aaa
bbb.txt,bbb

Perl работает как в Windows, так и в Unix, Linux и т.д., Но вам может потребоваться сначала установить его.

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