PDA

Visualizza la versione completa : Bash script - sed


pretoriano
09-12-2004, 21:01
Ho scritto uno script in bash banale che fa uso di sed per rinominare una serie di file. Questo è il codice:



#!/bin/sh
IFS='\n'
cd /mnt/raid/Mp3
for file in "`ls *.mp3`"
do
#sega gli spazi sostituendoli con _
filenew=`echo "$file" | sed 's/[ ]/_/g'`
mv "$file" $filenew
done

$file e $filenew me li stampa correttamente, ossia $file con tutti gli spazi a posto e lo stesso per $filenew con gli _.
Il problema sta nell'ultimo mv che mi restituisce:

mv: when moving multiple files, last argument must be a directory
Try `mv --help' for more information.


:confused:

Grazie.

Ilmalcom
09-12-2004, 23:00
Non mancano gli apici attorno a $filenew?

pretoriano
09-12-2004, 23:23
Ciao intendi "" o '' ;)
Perchè con "", che servono a vedere una stringa unica con spazi, ho provato ma nn va come è logico che sia!

:(

Grazie.

kyraz
10-12-2004, 06:50
oh, proprio oggi ho fatto uno scriptino del genere

kyraz
10-12-2004, 06:53
si vabbene... -_-'

dicevo, proprio oggi ho fatto uno scriptino del genere.. dovrei avercelo ancora nell'history.. spe

bada come sei fortunato :)



..@..:~/received/Tactical_Neutral_Implant$ OLDIF=$IFS; IFS=$'\n';for i in `ls *.mp3`;do j=`echo $i|sed 's/ /_/'`;mv $i $j;done ;IFS=$OLDIF


yawn

[edit]
notato una cosa, la differenza nel sed (io avevo uno spazio solo da togliere) e ->il dollaro a IFS!!!<--

pretoriano
10-12-2004, 09:27
Grazie, la differenza stava proprio in quel dollaro! :ciauz:

Loading