Temat: problem z komendą find + expand

chcę zamienić taby na spacje w plikach w katalogu .

find . -type f -exec expand -4 {} > {} \;

przekonwertowane pliki zapisują się w pliku {} a chcę żeby zapisały się pod tą samą nazwą
co zrobić żeby to zadziałało ?
Stanisław P.

Stanisław P. Software designer

Temat: problem z komendą find + expand

for x in $(find . -type f) ; do expand -4 $x > $x.new ; mv $x.new $x ; done


Chyba, że masz spacje w nazwach... wtedy musisz kombinować z `read` zamiast $(...).

Temat: problem z komendą find + expand


perl -pi -e 's/\t/ /g' nazwa_pliku

konto usunięte

Temat: problem z komendą find + expand

Niestety - z uwagi, że expand wypluwa tylko na stdout nie możesz użyć go w opcji `find -exec`. Trzeba w związku z tym parsować wyjście finda. Poniżej sposób "bezpieczny":

while IFS= read -r -d '' file; do
expand -4 -- "$file" > "${file}.tmp"
mv -- "${file}.tmp" "$file"
done < <(find /tmp -type f -print0)

łatwiej chyba jednak użyć finda z sedem:

find . -type f -exec sed -i 's/\t/    /g' {} +

Jeśli Twój sed nie obsługuje "\t", spróbuj:

sed -i "s/$(echo -ne '\t')/    /g"

Albo wprowadź znak tabulacji samodzielnie (Ctrl+V+[TAB]).Tomasz Elendt edytował(a) ten post dnia 05.03.11 o godzinie 12:04

Temat: problem z komendą find + expand

jak Mariusz pisał, tak chyba najprościej:

find . -type f -exec perl -pi -e 's/\t/ /g' {} \;

Następna dyskusja:

Mam problem..znowu.. ;)




Wyślij zaproszenie do