Вы можете использовать такую команду:
sed -e 's/\///g' < file.txt | xargs mkdir
Команда sed
удалит символы новой строки из file.txt и конвейер до xargs
будут запускать mkdir
для каждой строки в файле.
Эквивалентная команда (предложенная don_crissti) с использованием tr
вместо sed
:
tr -d / < file.txt | xargs mkdir
Вместо того, чтобы заново изобретать perl или что-то подобное, я взял ваш исходный код и добавил соответствующую часть, чтобы убрать проблемные символы /.
Начальное // это синтаксис bash для глобальной замены (поскольку у нас есть несколько проблемных /).
Последующий / представляет то, что мы хотим заменить (/).
Последний / предшествует тому, на что мы хотим его заменить (ничем).
#!/bin/bash -f
for f in $(cat ./file.txt ); do
mkdir ${f////}
done
И возможное решение с помощью awk
:
awk -F"/" '{ print $1 $2 $3; }' file | xargs mkdir
У меня работает эта строка perl one.
cat data01.txt |perl -ane 'chomp;s/\s+//g; s{\/}{}g; mkdir $_ if length($_);'
Вот способ с bash и sed
for var in $(cat data01.txt); do dir=$(echo $var | sed -e 's/\///g;'); mkdir -vp $dir; done