2017-10-15 4 views
-1

良い、私たちはネイティブ英語ではありません。
私たちはlinux cmdに多くのファイルやディレクトリの名前を変更しようとします。
exsample time\1.ext test\newname.ext read\test.ext what\abc.ext


は聞くになりたいです。
time\01-time.ext test\02-test.ext read\03-read.ext what\04-what.ext
は、シーケンス番号とdirnameです。

他の質問サイトポストコードを試しました。
であったが、用量はなかった。このファイルは、使用cmdを名前を変更する方法
find "$PWD" -name "[0-9][0-9].md" -exec bash -c ' DIR=$(dirname "{}" ); FILE=$(firename "{}" ); echo "{}" "$DIR"/"-${DIR##*/}".md ' \;
ls *.* | awk '{ printf "mv %s dirname-%03d.md\n", $0, NR }'


結果は無名のダイル&ディレクトリです。
png、txt、md、多くの内線
私たちは "" "[0-9] [0-9]"は正規表現です。
どのようにcmdの名前の変更シーケンス番号とdirname

+0

100を超えるファイルがある場合は、どのような新しい名前を使用する必要がありますか? '01-time.ext'と' 02-time.pdf'ができますか? – lit

+0

まあ、100を超えるファイル名の名前を変更する場合。 この場合、 '[01]'の '[001]'を使用します。 とディレクトリ内に混在するextfiles。 あなたの権利は '01-time.extと02-time.pdfと03-time.png'などです – follonel

答えて

0

awkまたは他の特定のコマンドを使用する必要があるかどうかわかりません。ここでは、ファイルをループして名前を変更する単純な方法があります。正しい名前を変更すると確信できたら、mvコマンドからechoを削除します。

#!/bin/bash 
count=1 

for fn in $(find . -name "*.ext" -o -name "*.pdf" -o -name "*.png") 
do 
    filename=$(basename $fn) 
    extension="${filename##*.}" 
    dn=$(dirname $fn) 
    dp=$(basename $dn) 
    thiscount=$(printf "%03d" $count) 

    echo mv $fn $dn/$thiscount-$dp.$extension 

    count=$((count+1)) 
done 
+0

ありがとうございます。私たちはテストの名前を変更して、kde dolphinのservicemenuを作成してみました。名前の変更を成功させたいだから、申し訳ありませんが、成功した名前を変更した後に解決されます。後で。 – follonel

+0

申し訳ありませんが、制御ファイルの方法を変更しました。しかし、助けてくれてありがとう。 – follonel

関連する問題