
Я хочу создать около 100 уникально названных каталогов, которые все содержат файл README.md. Я попытался сделать это с помощью текстового файла "PICOCTF.txt", содержащего:
vault-door-1
whats a net cat
strings it
Easy1
logon
13
caesar
dont-use-client-side
Bases
First Grep
So Meta
shark on wire 1
extensions
What Lies Within
la cifra de
picobrowser
asm1
Tapping
Flags
Based
Mr-Worldwide
plumbing
vault-door-3
rsa-pop-quiz
Client-side-again
Pitter, Patter, Platters
Web Gauntlet
asm2
m00nwalk
WhitePages
c0rrupt
vault-door-4
like1000
Guessing Game 1
droids0
mus1c
m00nwalk2
waves over lambda
messy-malloc
flag_shop
Investigative Reversing 0
asm3
miniRSA
vault-door-5
reverse_cipher
Irish-Name-Repo 1
shark on wire 2
Guessing Game 2
OTP Implementation
Investigative Reversing 2
droids1
Investigative Reversing 1
WebNet0
vault-door-6
seed-sPRiNG
Irish-Name-Repo 2
1_wanna_b3_a_r0ck5tar
b00tl3gRSA2
asm4
Irish-Name-Repo 3
JaWT Scratchpad
Java Script Kiddie
Need For Speed
Investigative Reversing 4
B1ll_Gat35
droids2
vault-door-7
AES-ABC
Investigative Reversing 3
vault-door-8
droids3
Java Script Kiddie 2
WebNet1
investigation_encoded_1
b00tl3gRSA3
john_pollard
droids4
Forky
investigation_encoded_2
sice_cream
B1g_Mac
zero_to_hero
В командной строке и в каталоге текстового файла я запускаю команду для генерации каталогов:
xargs -a PICOLIST.txt -d '\n' mkdir
или (оба варианта имеют одинаковый результат)
while read -r line; do mkdir -p "$line" ; done < PICOLIST.txt
Он действительно работает при их создании, есть только одна маленькая проблема. Я понимаю, что он создает только каталог для know, но когда я запускаю его, я получаю файлы со специальным символом (null?) в конце. Я не знаю, является ли это проблемой файловой системы Windows, так как я отформатировал свой текстовый файл, чтобы удалить все, что могло бы вызвать эту проблему (по крайней мере, я так думал). Например:
Это до запуска команды:
Это после выполненной команды:
Как вы можете видеть, после каждого имени папки есть специальный символ (звездочка? нулевой байт? проблема с расшифровкой новой строки в xargs?)...
Мой план — запустить следующий код в терминале, но с этим текстовым файлом:
xargs -a PICOLISTFILL.txt -d '\n' touch
vault-door-1/README.md
whats a net cat/README.md
strings it/README.md
Easy1/README.md
logon/README.md
13/README.md
caesar/README.md
dont-use-client-side/README.md
Bases/README.md
First Grep/README.md
So Meta/README.md
shark on wire 1/README.md
extensions/README.md
What Lies Within/README.md
la cifra de/README.md
picobrowser/README.md
asm1/README.md
Tapping/README.md
Flags/README.md
Based/README.md
Mr-Worldwide/README.md
plumbing/README.md
vault-door-3/README.md
rsa-pop-quiz/README.md
Client-side-again/README.md
Pitter, Patter, Platters/README.md
Web Gauntlet/README.md
asm2/README.md
m00nwalk/README.md
WhitePages/README.md
c0rrupt/README.md
vault-door-4/README.md
like1000/README.md
Guessing Game 1/README.md
droids0/README.md
mus1c/README.md
m00nwalk2/README.md
waves over lambda/README.md
messy-malloc/README.md
flag_shop/README.md
Investigative Reversing 0/README.md
asm3/README.md
miniRSA/README.md
vault-door-5/README.md
reverse_cipher/README.md
Irish-Name-Repo 1/README.md
shark on wire 2/README.md
Guessing Game 2/README.md
OTP Implementation/README.md
Investigative Reversing 2/README.md
droids1/README.md
Investigative Reversing 1/README.md
WebNet0/README.md
vault-door-6/README.md
seed-sPRiNG/README.md
Irish-Name-Repo 2/README.md
1_wanna_b3_a_r0ck5tar/README.md
b00tl3gRSA2/README.md
asm4/README.md
Irish-Name-Repo 3/README.md
JaWT Scratchpad/README.md
Java Script Kiddie/README.md
Need For Speed/README.md
Investigative Reversing 4/README.md
B1ll_Gat35/README.md
droids2/README.md
vault-door-7/README.md
AES-ABC/README.md
Investigative Reversing 3/README.md
vault-door-8/README.md
droids3/README.md
Java Script Kiddie 2/README.md
WebNet1/README.md
investigation_encoded_1/README.md
b00tl3gRSA3/README.md
john_pollard/README.md
droids4/README.md
Forky/README.md
investigation_encoded_2/README.md
sice_cream/README.md
B1g_Mac/README.md
zero_to_hero/README.md
Оба текстовых файла, которые я использую, были созданы в Notepad++ с настройкой «Unix (LF)».
Любая помощь будет высоко оценена!
решение1
Гипотеза: PICOLIST.txt
использует окончания строк DOS/Windows (CRLF, \r\n
).
Обе команды, которые вы пробовали ( read
, xargs
), ожидают окончания строк Unix (LF, \n
). Они обрабатывают \r
как обычный символ. В вашем случае \r
включен в строку, передаваемую mkdir
каждый раз.
Используйте dos2unix
для конвертации файла.
Если вам нужно редактировать такой файл в Windows, используйте редактор, который позволяет выбирать окончания строк Unix. Редактор с такой возможностью можно использовать вместо dos2unix
для исправления текущего файла.
Возможно, PICOLISTFILL.txt
имеет такой же «недостаток».
решение2
Если вы хотите сохранить файлы txt в исходном формате, вы можете добавить к командам xargs префикс:
cat PICOLISTFILL.txt | dos2unix | xargs ...
При таком подходе часть xargs не будет нуждаться в флагах "-a" или "-d".