すべてのユーザーアカウントのディレクトリ名を変更する方法

すべてのユーザーアカウントのディレクトリ名を変更する方法

より多くのユーザーのtmpホームディレクトリにディレクトリがあるとします。tmpすべてのユーザーのホームディレクトリにあるすべてのディレクトリの名前を変更したいと思います。最も簡単な方法は何ですか?

このような:

sudo mv /home/*/tmp /home/*/temp

いいえ。

このような:

for dir in /home/*; do
    if [ -d $dir/tmp ]; then
        mv $dir/tmp $dir/temp
    fi
done

あまりにも多いようです。

ベストアンサー1

Perl は、rename(1)ほとんどの Linux システムにインストールされたコマンドとともに提供されます。 Debian ベースのシステムでは、/usr/binこの場合は次のように使用できます。

$ rename 's/tmp$/temp/' /home/*/tmp

最初のパラメータは、新しい名前の後続のパラメータを生成するために使用されるPerl式です。その後、その式の結果に応じてそれぞれの名前が変更されます。

ホームディレクトリにすでに名前が付けられているファイル/ディレクトリがある場合は、tempそのディレクトリにのみエラーが発生して続行しrenameます。

/home/c/tmp not renamed: /home/c/temp already exists

まず、そのフラグを使用して実行して、-n実際に実行せずに名前変更が実行する操作を確認し、すべてが正しく表示されていることを確認できます。それからそれを置き、-n私の役割を果たしてください。

おすすめ記事