Portál AbcLinuxu, 30. dubna 2025 14:33
Pokud potřebujete zpracovat soubor s mezerou v názvu, můžete jednoduše použít uvozovky a napsat příkaz třeba cat "soubor s mezerou.txt"
.
Poté, co BASH provede expanzi zadaného řádku, rozdělí řádek na slova. A to tak, že jej roztrhne v místě výskytu znaků uvedených v proměnné $IFS (Input Field Separator), defaultní hodnota je [space][tab][newline]
$ cat seznam_souboru # seznam souboru, na každém řádku jeden název souboru soubor s mezerami v nazvu dalsi soubor $ cp $(cat seznam_souboru) slozka/ # bash rozdělí výstup $(cat soubor) na slova (jednotlivé argumenty pro cp) cp: nelze získat informace o „soubor“: není souborem ani adresářem cp: nelze získat informace o „s“: není souborem ani adresářem cp: nelze získat informace o „mezerami“: není souborem ani adresářem cp: nelze získat informace o „v“: není souborem ani adresářem cp: nelze získat informace o „nazvu“: není souborem ani adresářem cp: nelze získat informace o „dalsi“: není souborem ani adresářem cp: nelze získat informace o „soubor“: není souborem ani adresářem $ IFS=$'\n' # pouze znak nového řádku $ cp $(cat seznam_souboru) slozka/ # nelekejte se té samé chyby, dané soubory na mém disku opravdu neexistují :D cp: nelze získat informace o „soubor s mezerami v nazvu“: není souborem ani adresářem cp: nelze získat informace o „dalsi soubor“: není souborem ani adresářemPokud to chcete používat v interaktivním terminálu nebo sourcovaném skriptu, tak na jeho konci uveďte unset IFS, čímž řeknete BASHi aby používal defaultní hodnotu [space][tab][newline], aby to pak nedělalo neplechu jinde.
find
u), pomůže kombinace find ... -print0 | xargs -0 ...
Dokument vytvořil: miso, 21.10.2007 14:46 | Poslední úprava: Prcek, 22.5.2008 21:23 | Další přispěvatelé: tsLnox, depka | Historie změn | Zobrazeno: 2236×
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.