Síða 1 af 1
losna við bil í skráarnöfnum
Sent: Fim 10. Nóv 2011 17:11
af bjarkih
fann á netinu hvernig á að breyta skráarnöfnum í Linux til að losna við bil í skráarnöfnum:
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.
Re: losna við bil í skráarnöfnum
Sent: Fim 10. Nóv 2011 19:17
af Haxdal
Þ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
Re: losna við bil í skráarnöfnum
Sent: Fim 10. Nóv 2011 20:08
af worghal
vá ég last þetta sem "losna við bíl í skráningarnöfnum"
Re: losna við bil í skráarnöfnum
Sent: Fim 10. Nóv 2011 20:41
af Sphinx
worghal skrifaði:vá ég last þetta sem "losna við bíl í skráningarnöfnum"
haha ég líka
Re: losna við bil í skráarnöfnum
Sent: Fös 11. Nóv 2011 14:39
af bjarkih
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í.
Re: losna við bil í skráarnöfnum
Sent: Fös 11. Nóv 2011 14:41
af GuðjónR
Sphinx skrifaði:worghal skrifaði:vá ég last þetta sem "losna við bíl í skráningarnöfnum"
haha ég líka
WTF....ég las það líka þannig
Re: losna við bil í skráarnöfnum
Sent: Fös 11. Nóv 2011 16:57
af Haxdal
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.
Re: losna við bil í skráarnöfnum
Sent: Fös 11. Nóv 2011 17:58
af Haxdal
hm .. grunar kannski að þú sért að tala um fyrir Windows .. en þetta drasl sem ég peistaði er fyrir Linux
Re: losna við bil í skráarnöfnum
Sent: Fös 11. Nóv 2011 18:21
af coldcut
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...
Re: losna við bil í skráarnöfnum
Sent: Fös 11. Nóv 2011 19:00
af bjarkih
Í 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.
Re: losna við bil í skráarnöfnum
Sent: Fös 11. Nóv 2011 21:07
af Haxdal
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
Re: losna við bil í skráarnöfnum
Sent: Lau 12. Nóv 2011 01:08
af bjarkih
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
Re: losna við bil í skráarnöfnum
Sent: Lau 12. Nóv 2011 04:33
af Haxdal
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
Re: losna við bil í skráarnöfnum
Sent: Lau 12. Nóv 2011 12:53
af bjarkih
Þakka þér fyrir
það þarf greinilega að leggja töluvert á sig til að taka allar skrár og directory og breyta þeim.