Zakładając, że mam plik o nazwie list.txt
zawiera ścieżki do plików w katalogu;
I wzór ścieżek w ten sposób:
./path/to/file.txt
./path/to/another/file.txt
... etc
Chcę zapętlić się w środku list.txt
plik, aby pobrać ścieżki plików i zmienić ich kodowanie za pomocą iconv
;
Robiłem to, jeśli wszystko było w tym samym katalogu, używając:
for i in `cat list.txt` ; do iconv -f windows-1256 -t utf8 $i > new_$i; done
Ale problem Teraz stoję przed, ponieważ są to ścieżki na poziomie muli, nazywające wyjście iconv
drukuje new_$i
na początku ścieżka - jak sądzę - i to daje mi błędy:
No such file or directory
Więc jak mogę uzyskać wyjście iconv
być jak:
./path/to/new_file.txt
./path/to/another/new_file.txt
... etc
linux
command-line
bash
Homer
źródło
źródło
Odpowiedzi:
Możesz użyć czegoś takiego, jeśli używasz
bash
jako twoja skorupa:Linia, która przypisuje
dir
ifile
używa konstrukcji udokumentowanych wParameter expansion
częśćEXPANSION
sekcjabash
strona man. Znaki cudzysłowu wokół konstrukcji służą do obsługi białych znaków w nazwach plików.Jeśli chcesz przetestować coś takiego przed jego użyciem, możesz dodać go wcześniej
echo
do polecenia zainteresowania (iconv
w tym przykładzie), aby upewnić się, że polecenie jest tym, czym ma być.źródło