web-dev-qa-db-ja.com

名前を再入力せずにファイルを移動して名前を変更し、新しい文字を追加する方法

毎日生成される一部のファイルの場所を頻繁に変更します。必要なのは、新しい必要な文字を追加するだけで名前を変更したいことです。

私が欲しいのはこのようなものです:

$ mv file.csv /home/user/{something}_backup1

だから私は見ることができました:

$ ls /home/user
file.csv_backup1

私が今やっていることは簡単です:

$ mv file.csv /home/user/file.csv_backup1

「怠惰にしないで、そのようにしてください」と言うことができます。実際のファイル名は約25文字で、再入力するのは本当に面倒です。

過去の例は単なる例であり、別のディレクトリまたは別の新しいテキストである可能性があります。

ちなみに私はbash Shellを使用しています

5
tachomi

シェルrcファイルに追加された bash または ksh 関数を使用できます。

mymv(){ echo mv "$1" "$2/${1##*/}_$3"; }
mymv file.csv /home/user backup1

テストが完了したらechoを削除します

4
Gilles Quenot

最も簡単なルートであるIMHOは、変数を使用することです。

a=file.csv; mv "$a" ~user/"$a"_backup

変数の設定中と使用中の両方で、変数を使用してタブ補完を利用できます。

3
muru

bashでは、次のことを試すことができます。

  • タイプmv file1
  • 押す Ctrl-w 削除するのに十分な時間file1
  • 押す Ctrl-y 貼り付けるfile1戻る。
  • タイプ/home/user/
  • 押す Ctrl-y 貼り付けるfile1
  • 残りを入力:_backup
2
jw013

別のソリューション。

少し粗雑ですが、元のすべてのファイルに拡張子.csvを付ける場合、およびすべての.csvファイルを現在のディレクトリから移動する場合、これは機能します。

for i in *.csv; do 
    mv $i /home/user; 
    rename .csv .csv_backup1 /home/user/*.csv; 
done

必要に応じて、各ユーザーの「ユーザー」を変更するだけです。

1
Sree

ホームフォルダー(または移動するファイルを含むフォルダー以外のフォルダー)で簡単なスクリプトを作成できます。スクリプトは次のようになります。

#!/bin/bash
for var in ./*
do
if [ -f "$var" ]
then
mv "$var" /home/user/"$var".backup1
fi
done
  • ファイルを移動するフォルダからcd <the directory your files are in>でこのスクリプトを実行してから、このスクリプトを実行します
  • このスクリプトはすべてのファイルを/home/userに移動し、それに応じて名前を変更します
  • ファイル名にspacesが含まれている場合は問題ありません
  • また、ディレクトリではなくファイルのみを移動するため、エラーメッセージや予期しない結果が表示されなくなります。
0
Edward Torvalds