2016-07-08 11 views
-1

私は2つの目標を達成しようとしています。ここで複数のディレクトリから中間の文字を削除し、サブディレクトリのファイル名を変更してディレクトリ+ファイル名を含むようにするスクリプト

は概要です:

enter image description here

同じ001.pdfファイルを含む乱数とフォルダ/ディレクトリの数百人(5555#5555)があります。

1:新しいフォルダ番号と001.pdf

が含まれるように001.pdfファイルの名前を変更し:は、すべてのフォルダ/ディレクトリ

2から「#」記号を削除し、私はしたいと思います

望ましい結果:55555555.001.pdf

0123になり001.pdfファイルを含むフォルダ5555#5555なっ

希望と感謝。

+0

「*」の中にdirを入力してください。 mv "$ dir" $ {dir //#};を実行します。 mv $ {dir //#}/001.pdf $ {dir //#}/$ {dir //#}。001.pdf;完了しました。 – alvits

+0

または、あなたは 'rename '#' '' *;を試すことができます。 f in */001.pdfの場合; '/' '/' $ {f %%/*}の名前を変更してください。 $ f;完了 – alvits

答えて

0

so update:提案をいただきありがとうございます。ここで私が私のために働くことがあります。最高の方法ではないかもしれないが、ねえ。

curdir=`pwd` 
    for f in `find . -maxdepth 1 -type d -name "*#*" -print`; 
    do 
    echo "folder is $f" 
    newFolder=`echo $f | sed 's/#//g'` 
    echo mv $f $newFolder 
    mv $f $newFolder 
    echo newfolder is $newFolder 
    cd $newFolder 
    for file in `find . -maxdepth 1 -type f -printf '%f\n'`; do 
     echo "mv $file to ${newFolder}_$file" 
     mv $file ${newFolder}_$file 
    done 
    cd $curdir 
    done 
0
for f in *#*; 
do 
    newFolder=$(echo ${f//%}) 
    mv $f $newFolder 
    newFile=$(printf $newFolder".001.pdf") 
    mv $newFolder/001.pdf $newFolder/$newFile 
done 

より洗練された解決策があるかもしれませんが、これはそれを行うべきです。 #以外のファイルをキャッチする場合は、ループの正規表現を変更します。

関連する問題