Unixでファイルの名前を変更する方法を知っています。
$ mv ~/folder/subfolder/file.txt ~/folder/subfolder/file.sh
^-------this part------^ ^------this part-------^
繰り返すのに時間がかかりすぎる~/folder/subfolder/file
2回。
より速い方法はありますか?
シェルの場合 supportedBrace Expansion (csh
、tcsh
、ksh
、zsh
、bash
、mksh
、lksh
、pdksh
、yash
withbrace-expandyash --brace-expand
を呼び出すか、対話型シェルでset -o brace-expand
またはfish
)を呼び出すことで有効になります。
mv ~/folder/subfolder/file.{txt,sh}
rename
(util-linuxパッケージの一部)を使用することもできます。
rename .txt .sh ~/folder/subfolder/file.txt
詳細は rename man page を参照してください。
上記はすべて良好です。これも機能します:
( cd ~/folder/subfolder && mv file.txt file.sh )
いいえ。ファイル名を変更するには、ファイルのフルパスを指定する必要があります。唯一の代替策は、mv
を実行する前にターゲットフォルダーに移動することです。
cd ~/folder/subfolder/
mv file.txt file.sh
または、ターゲットディレクトリのファイルの名前を変更する小さな関数を書くこともできます。たとえば、これらの行をシェル初期化ファイル(~/.bashrc
bash
を使用している場合):
lmv(){
_path=$(dirname -- "$1")
_target="${_path%/}/$2"
mv -- "$1" "$_target"
}
次に、新しいターミナルを開くか、単にsource ~/.bashrc
を使用して、initファイルを再度読み取ります。
lmv ~/folder/subfolder/file.txt file.sh
Cuonglmの答えの有用性を拡大するためだけに(私は彼の解決策を愛しているので信用しないでください)そして彼の答えは正しいものです。
ユースケースは、リモートの場所(実際の問題)にあるファイルをmvで処理したい場合がよくあります。 /folder/subfolder/configFile.dat TO configFile.dat.orig
この形式のコマンドファイル拡張子を追加(元の拡張子を置き換えません)
mv ~/folder/subfolder/file.txt{,.orig}
説明:「{、.orig}」は、ファイル名の最後の(何もない)を(何か)「.orig」で置き換えることを意味します
またはファイル拡張子を削除(名前変更を元に戻す)
mv ~/folder/subfolder/file.txt{.orig,}
注:「dirパスを再入力せずにファイルの名前を変更する最も簡単な方法」のトピックはまだ残っています
はい。 bash
を使用する場合は、Sudo pushd ~/folder/subfolder/ && Sudo mv ./file.txt ./file.sh && popd
。
これは実際により大きく、popd
を実行したときに元のディレクトリへのアクセス許可を失った場合に失敗する可能性があります。