Μετροπή αρχείων wma σε mp3

Giorgos Keramidas keramida at ceid.upatras.gr
Fri Dec 23 16:14:19 EET 2005


On 2005-12-23 14:44, Andreas Chalkias <grlinux at karpathian.com> wrote:
> Πάντως, αν έχετε κενά (spaces) στα ονόματα των αρχείων σας (πολύ
> συνηθισμένο για αρχεία audio), τότε το παρακάτω script είναι ότι
> χρειάζεστε!!
>
> ######################################
> #! /bin/bash
> # blank-rename.sh
> #
> # Substitutes underscores for blanks in all the filenames in a directory.
>
> ONE=1                     # For getting singular/plural right (see below).
> number=0                  # Keeps track of how many files actually renamed.
> FOUND=0                   # Successful return value.
>
> for filename in *         #Traverse all files in directory.
> do
>      echo "$filename" | grep -q " "         #  Check whether filename
>      if [ $? -eq $FOUND ]                   #+ contains space(s).
>      then
>        fname=$filename                      # Strip off path.
>        n=`echo $fname | sed -e "s/ /_/g"`   # Substitute underscore for blank.
>        mv "$fname" "$n"                     # Do the actual renaming.
>        let "number += 1"
>      fi
> done
>
> if [ "$number" -eq "$ONE" ]                 # For correct grammar.
> then
>  echo "$number file renamed."
> else
>  echo "$number files renamed."
> fi
>
> exit 0
> ######################################

Είναι λίγο επικίνδυνο να χρησιμοποιείς το * σε for loops με αυτό τον
τρόπο όμως και το παραπάνω δε χειρίζεται τα filenames με TABS.  Αν τα
filenames είναι πολλά, μπορεί να σκάσεις πάνω στο όριο μήκους που έχει
ένα command line άνετα:

%   #!/bin/sh
%   #
%   # usage: rename.sh DIR ...
%
%   filecount=0
%
%   for dname in * ; do
%       find "${dname}" -type f |\
%       while read fname; do
%           newname=$( echo "${fname}" | sed -e 's/[[:space:]]/_/g' )
%           if [ "${fname}" = "${newname}" ]; then
%               continue
%           fi
%           mv "${fname}" "${newname}" >/dev/null 2>&1
%           if [ $? -ne 0 ]; then
%               echo >&2 "$0: ${fname}: cannot rename file."
%	    else
%               filecount=$(( $filecount + 1 ))
%           fi
%       done
%   done
%
%   if [ $filecount -eq 1 ]; then
%       echo "1 file renamed."
%   elif [ $filecount -gt 1 ]; then
%       echo "$filecount files renamed.
%   fi





More information about the Linux-greek-users mailing list