2016-02-20 2 views
-1

J'ai des centaines de fichiers suivants:Renommer plusieurs fichiers en shell sous Mac OS X

 
22170000000000002 Module 1 Quiz Quiz Item Analysis Report.csv 
22170000000000112 Module 2 Quiz Quiz Item Analysis Report.csv 
22180000000000002 Module 3 Quiz Quiz Item Analysis Report.csv 

Comment puis-je renommer les utiliser terminaux avec le système iOS comme

 
2217002_01_Item.csv 
2217112_02_Item.csv 
2218002_03_Item.csv 

Je sais qu'il ya quelques discussions sur les fichiers de renommage, mais je suis vraiment nouveau pour les commandes shell. J'ai besoin d'aide avec mon cas spécifique.

+0

iOS ou OS X ???? –

Répondre

1
# create test environnement: 
mkdir tmp 
cd tmp 
echo "22170000000000002 Module 1 Quiz Quiz Item Analysis Report.csv" > "22170000000000002 Module 1 Quiz Quiz Item Analysis Report.csv" 
echo "22170000000000112 Module 2 Quiz Quiz Item Analysis Report.csv" > "22170000000000112 Module 2 Quiz Quiz Item Analysis Report.csv" 
echo "22180000000000002 Module 3 Quiz Quiz Item Analysis Report.csv" > "22180000000000002 Module 3 Quiz Quiz Item Analysis Report.csv" 

# test file renaming: 
f="22170000000000002 Module 1 Quiz Quiz Item Analysis Report.csv" 
echo $f | sed -e "s/^\(....\)[0-9]*\([0-9][0-9][0-9]\) .*Module \([0-9]\)* .*$/\1\2_0\3_Item.csv/g" 
#return 2217002_01_Item.csv 

# Verifing in loop 
ls -1 | while read f 
do 
    new_name=`echo $f | sed -e "s/^\(....\)[0-9]*\([0-9][0-9][0-9]\) .*Module \([0-9]\)* .*$/\1\2_0\3_Item.csv/g"` 
    echo "$f  ----> $new_name" 
done 

# To rename all files : 
ls -1 | while read f 
do 
    new_name=`echo $f | sed -e "s/^\(....\)[0-9]*\([0-9][0-9][0-9]\) .*Module \([0-9]\)* .*$/\1\2_0\3_Item.csv/g"` 
    echo "$f  ----> $new_name" 
    mv "$f" "$new_name"  
done 

ls -1 
+0

Que fait le -e in sed? J'ai lu le fichier man de sed. Mais ne comprends toujours pas. J'ai enlevé le -e et il semble donner les mêmes résultats. – wen