losna við bil í skráarnöfnum

Skjámynd

Höfundur
bjarkih
Nörd
Póstar: 108
Skráði sig: Þri 16. Feb 2010 17:55
Reputation: 0
Hafðu samband:
Staða: Ótengdur

losna við bil í skráarnöfnum

Pósturaf bjarkih » Fim 10. Nóv 2011 17:11

fann á netinu hvernig á að breyta skráarnöfnum í Linux til að losna við bil í skráarnöfnum:

Kóði: Velja allt

rename -v 's/\ /\_/g' *
Vandamálið er að rename er ekki með -r option til að gera þetta í gegnum öll undir directory, væri þægilegt að fá ábendingu um lausn.


Bug #1 https://bugs.launchpad.net/ubuntu/+bug/1

Skjámynd

Haxdal
Tölvutryllir
Póstar: 640
Skráði sig: Lau 14. Apr 2007 18:58
Reputation: 0
Staða: Ótengdur

Re: losna við bil í skráarnöfnum

Pósturaf Haxdal » Fim 10. Nóv 2011 19:17

Þetta ætti að virka. Finnur allar skrár og geymir undir files, fer svo í gegnum hverja fyrir sig, athugar hvort það sé directory eða skrá (test -d) og ef það er directory þá keyrir það rename skipunina í directoryinu.

#!/bin/bash
files="$(find . | grep './')"

for file in $files
do
if test -d $file
then
`rename -v 's/\ /\_/g' "$file/"*`
fi
done


Atvinnunörd - Part of the 2%
> FX8350 | Gigabyte 990FXA-UD3 | Nvidia GTX 760 | 8GB Somethingsomething | Corsair Graphite 600T <

Skjámynd

worghal
Kóngur
Póstar: 6396
Skráði sig: Sun 11. Mar 2007 14:00
Reputation: 463
Staðsetning: fyrir aftan þig
Staða: Ótengdur

Re: losna við bil í skráarnöfnum

Pósturaf worghal » Fim 10. Nóv 2011 20:08

vá ég last þetta sem "losna við bíl í skráningarnöfnum" :happy


CPU: Intel Core i7 12700KF MB: Gigabyte Z690 Gaming X GPU: EVGA RTX 3080 FTW3 ULTRA 12Gb RAM: Corsair Vengeance RGB Pro 2x16Gb 3600Mhz CPU Cooler: Noctua NH-D14 Sound: Topping DX7s - HD380PRO - Yamaha HS7 CASE: Corsair 4000D Airflow


Sphinx
1+1=10
Póstar: 1186
Skráði sig: Mán 11. Maí 2009 21:06
Reputation: 0
Staða: Ótengdur

Re: losna við bil í skráarnöfnum

Pósturaf Sphinx » Fim 10. Nóv 2011 20:41

worghal skrifaði:vá ég last þetta sem "losna við bíl í skráningarnöfnum" :happy


haha ég líka :happy


MSI GX640 / 15,4" 1680x1050 / Intel Quad I5 2,27GHz / ATI HD5850 1GB / DDR3 2x2GB / seagate 500GB / windows 7 ultimate

Skjámynd

Höfundur
bjarkih
Nörd
Póstar: 108
Skráði sig: Þri 16. Feb 2010 17:55
Reputation: 0
Hafðu samband:
Staða: Ótengdur

Re: losna við bil í skráarnöfnum

Pósturaf bjarkih » Fös 11. Nóv 2011 14:39

Haxdal skrifaði:Þetta ætti að virka. Finnur allar skrár og geymir undir files, fer svo í gegnum hverja fyrir sig, athugar hvort það sé directory eða skrá (test -d) og ef það er directory þá keyrir það rename skipunina í directoryinu.

#!/bin/bash
files="$(find . | grep './')"

for file in $files
do
if test -d $file
then
`rename -v 's/\ /\_/g' "$file/"*`
fi
done


Takk fyrir svarið en þetta gerir ekki það sem ég er að sækjast eftir, að framkvæma rename skipunina með þessum options í gegnum skráarsafnið, t.d. Music eða Videos og allt sem er undir því.


Bug #1 https://bugs.launchpad.net/ubuntu/+bug/1

Skjámynd

GuðjónR
Stjórnandi
Póstar: 16568
Skráði sig: Fim 29. Ágú 2002 18:46
Reputation: 2135
Staðsetning: Hérna
Hafðu samband:
Staða: Ótengdur

Re: losna við bil í skráarnöfnum

Pósturaf GuðjónR » Fös 11. Nóv 2011 14:41

Sphinx skrifaði:
worghal skrifaði:vá ég last þetta sem "losna við bíl í skráningarnöfnum" :happy


haha ég líka :happy


WTF....ég las það líka þannig :wtf



Skjámynd

Haxdal
Tölvutryllir
Póstar: 640
Skráði sig: Lau 14. Apr 2007 18:58
Reputation: 0
Staða: Ótengdur

Re: losna við bil í skráarnöfnum

Pósturaf Haxdal » Fös 11. Nóv 2011 16:57

bjarkih skrifaði:
Haxdal skrifaði:Þetta ætti að virka. Finnur allar skrár og geymir undir files, fer svo í gegnum hverja fyrir sig, athugar hvort það sé directory eða skrá (test -d) og ef það er directory þá keyrir það rename skipunina í directoryinu.

#!/bin/bash
files="$(find . | grep './')"

for file in $files
do
if test -d $file
then
`rename -v 's/\ /\_/g' "$file/"*`
fi
done


Takk fyrir svarið en þetta gerir ekki það sem ég er að sækjast eftir, að framkvæma rename skipunina með þessum options í gegnum skráarsafnið, t.d. Music eða Videos og allt sem er undir því.

huh ?..
þetta á að gera nákvæmlega það, finnur allar möppur sem eru í directoryinu sem þú keyrir shell scriptuna í og framkvæmir rename skipunina þína í þeim.


Atvinnunörd - Part of the 2%
> FX8350 | Gigabyte 990FXA-UD3 | Nvidia GTX 760 | 8GB Somethingsomething | Corsair Graphite 600T <

Skjámynd

Haxdal
Tölvutryllir
Póstar: 640
Skráði sig: Lau 14. Apr 2007 18:58
Reputation: 0
Staða: Ótengdur

Re: losna við bil í skráarnöfnum

Pósturaf Haxdal » Fös 11. Nóv 2011 17:58

hm .. grunar kannski að þú sért að tala um fyrir Windows .. en þetta drasl sem ég peistaði er fyrir Linux :-"


Atvinnunörd - Part of the 2%
> FX8350 | Gigabyte 990FXA-UD3 | Nvidia GTX 760 | 8GB Somethingsomething | Corsair Graphite 600T <


coldcut
Vaktari
Póstar: 2192
Skráði sig: Mið 21. Nóv 2007 02:25
Reputation: 0
Staðsetning: /dev/random
Staða: Ótengdur

Re: losna við bil í skráarnöfnum

Pósturaf coldcut » Fös 11. Nóv 2011 18:21

Haxdal skrifaði:hm .. grunar kannski að þú sért að tala um fyrir Windows .. en þetta drasl sem ég peistaði er fyrir Linux :-"


mig grunar nú frekar að hann sé að keyra skipunina í vitlausri möppu...



Skjámynd

Höfundur
bjarkih
Nörd
Póstar: 108
Skráði sig: Þri 16. Feb 2010 17:55
Reputation: 0
Hafðu samband:
Staða: Ótengdur

Re: losna við bil í skráarnöfnum

Pósturaf bjarkih » Fös 11. Nóv 2011 19:00

Í vitlausri möppu??? sorry en það á ekki að skipta neinu máli í hvaða möppu skrárnar eru, ég bjó til temp directory með nokkrum skrám sem voru með bil í skráarnöfnunum og svo bjó ég til directory undir því sem innihélt líka skrár með bil í nöfnunum. keyrði síðan scriptið ( ./script ) og ekkert gerðist.


Bug #1 https://bugs.launchpad.net/ubuntu/+bug/1

Skjámynd

Haxdal
Tölvutryllir
Póstar: 640
Skráði sig: Lau 14. Apr 2007 18:58
Reputation: 0
Staða: Ótengdur

Re: losna við bil í skráarnöfnum

Pósturaf Haxdal » Fös 11. Nóv 2011 21:07

Var ekki alveg nógu robust scriptan hjá mér. Fer eftir hvað þú ert með í IFS og ` var að virka eitthvað asnalega.

En þessi ætti að virka miðað við test hjá mér, einfaldaði hana líka þegar ég fattaði að type virkar með find :)

Kóði: Velja allt

#!/bin/bash
# Geymum IFS
OLDIFS=$IFS
IFS="$(printf '\n\t')"

dirs="$(find -type d)"
root=$(pwd)

for dir in $dirs
do
cd "$root/$dir"
rename -v 's/\ /\_/g' *
done

# restoreum IFS
IFS=$OLDIFS


Dæmi um keyrslu hjá mér.
foo@nemesis:~/spacetest$ find .
.
./file 2
./file 1
./dir3
./dir3/dir6
./dir3/dir6/dir7
./dir3/dir6/dir7/file 11
./dir3/dir6/dir7/file 12
./file 3
./dir1
./dir1/dir4
./dir1/dir4/file file file 6
./dir1/dir4/file 5
./dir1/dir5
./dir1/dir5/file 8
./dir1/dir5/file 7
./dir1/file 4
./dir2
./dir2/file 9
./dir2/file 10

foo@nemesis:~/spacetest$ cat test.sh
#!/bin/bash
# Geymum IFS
OLDIFS=$IFS
IFS="$(printf '\n\t')"

dirs="$(find -type d)"
root=$(pwd)

for dir in $dirs
do
cd "$root/$dir"
rename -v 's/\ /\_/g' *
done

# restoreum IFS
IFS=$OLDIFS

foo@nemesis:~/spacetest$ sh test.sh
file 1 renamed as file_1
file 2 renamed as file_2
file 3 renamed as file_3
file 11 renamed as file_11
file 12 renamed as file_12
file 4 renamed as file_4
file 5 renamed as file_5
file file file 6 renamed as file_file_file_6
file 7 renamed as file_7
file 8 renamed as file_8
file 10 renamed as file_10
file 9 renamed as file_9

foo@nemesis:~/spacetest$ find .
.
./file_1
./dir3
./dir3/dir6
./dir3/dir6/dir7
./dir3/dir6/dir7/file_11
./dir3/dir6/dir7/file_12
./file_2
./dir1
./dir1/dir4
./dir1/dir4/file_file_file_6
./dir1/dir4/file_5
./dir1/file_4
./dir1/dir5
./dir1/dir5/file_7
./dir1/dir5/file_8
./dir2
./dir2/file_9
./dir2/file_10
./file_3


Atvinnunörd - Part of the 2%
> FX8350 | Gigabyte 990FXA-UD3 | Nvidia GTX 760 | 8GB Somethingsomething | Corsair Graphite 600T <

Skjámynd

Höfundur
bjarkih
Nörd
Póstar: 108
Skráði sig: Þri 16. Feb 2010 17:55
Reputation: 0
Hafðu samband:
Staða: Ótengdur

Re: losna við bil í skráarnöfnum

Pósturaf bjarkih » Lau 12. Nóv 2011 01:08

virkaði betur en gat ekki breytt nöfnum á skrám í undir directory,

Kóði: Velja allt

cd: 13: can't cd to /home/bjarki/temp/./d d


Bug #1 https://bugs.launchpad.net/ubuntu/+bug/1

Skjámynd

Haxdal
Tölvutryllir
Póstar: 640
Skráði sig: Lau 14. Apr 2007 18:58
Reputation: 0
Staða: Ótengdur

Re: losna við bil í skráarnöfnum

Pósturaf Haxdal » Lau 12. Nóv 2011 04:33

Fleh.
Rename skipunin þín renamear líka directoryum, svo ef þaðeru directory með bili í nafninu þá er því directoryi renameað ásamt öllum skránum og þ.a.l. eru upplýsingarnar í arrayinu ekki réttar lengur ](*,)

Svona, hérna er scripta sem renamear bara skrám, sleppir öllum directoryum.

Kóði: Velja allt

#!/bin/bash
IFS="$(printf '\n\t')"

dirs="$(find -type d)"
root=$(pwd)

for dir in $dirs
do

toDir=$(echo "$root/$dir/" | sed 's/ /\\ /g')

eval cd $toDir

files="$(find -maxdepth 1 -type f)"
for file in $files
do

rename -v 's/\ /\_/g' "$file"
done

done

# restoreum IFS
IFS=$OLDIFS


Result af local testi hjá mér:
foo@nemesis:~/spacetest$ find .
.
./file 2
./file 1
./dir3
./dir3/dir6
./dir3/dir6/dir7
./dir3/dir6/dir7/file 11
./dir3/dir6/dir7/file 12
./file 3
./dir1
./dir1/dir4
./dir1/dir4/file file file 6
./dir1/dir4/file 5
./dir1/dir5
./dir1/dir5/file 8
./dir1/dir5/file 7
./dir1/file 4
./dir2
./dir2/file 9
./dir2/file 10
./fir foo
./fir foo/file 16
./fir foo/file 15
./test.sh
./fir fir
./fir fir/file 13
./fir fir/file 14

foo@nemesis:~/spacetest$ sh test.sh
./file 2 renamed as ./file_2
./file 1 renamed as ./file_1
./file 3 renamed as ./file_3
./file 11 renamed as ./file_11
./file 12 renamed as ./file_12
./file 4 renamed as ./file_4
./file file file 6 renamed as ./file_file_file_6
./file 5 renamed as ./file_5
./file 8 renamed as ./file_8
./file 7 renamed as ./file_7
./file 9 renamed as ./file_9
./file 10 renamed as ./file_10
./file 16 renamed as ./file_16
./file 15 renamed as ./file_15
./file 13 renamed as ./file_13
./file 14 renamed as ./file_14

foo@nemesis:~/spacetest$ find .
.
./file_1
./dir3
./dir3/dir6
./dir3/dir6/dir7
./dir3/dir6/dir7/file_11
./dir3/dir6/dir7/file_12
./file_2
./dir1
./dir1/dir4
./dir1/dir4/file_file_file_6
./dir1/dir4/file_5
./dir1/file_4
./dir1/dir5
./dir1/dir5/file_7
./dir1/dir5/file_8
./dir2
./dir2/file_9
./dir2/file_10
./file_3
./fir foo
./fir foo/file_15
./fir foo/file_16
./test.sh
./fir fir
./fir fir/file_14
./fir fir/file_13


Atvinnunörd - Part of the 2%
> FX8350 | Gigabyte 990FXA-UD3 | Nvidia GTX 760 | 8GB Somethingsomething | Corsair Graphite 600T <

Skjámynd

Höfundur
bjarkih
Nörd
Póstar: 108
Skráði sig: Þri 16. Feb 2010 17:55
Reputation: 0
Hafðu samband:
Staða: Ótengdur

Re: losna við bil í skráarnöfnum

Pósturaf bjarkih » Lau 12. Nóv 2011 12:53

Þakka þér fyrir :D það þarf greinilega að leggja töluvert á sig til að taka allar skrár og directory og breyta þeim.


Bug #1 https://bugs.launchpad.net/ubuntu/+bug/1