次のようなことをしたい
$ tmp=name*
$ mv $tmp new_$tmp
$ ls new_*
$ new_name-with-stuff-i-dont-want-to-type name-with-stuff-i-dont-want-to-type
環境変数の設定が機能しているようです。
$ $tmp
$ name-with-stuff-i-dont-want-to-type
しかし、私がする時ではありません。mv
$ mv $tmp new_$tmp
$ ls new_*
$ new_name*
Q:タイピング時間を節約するための賢くて簡単な方法はありますか?
答え1
私はいつもbash拡張が好きでした。
ls
name-with-stuff-i-dont-want-to-type
mv name-with-stuff-i-dont-want-to-type{,_old}
ls
name-with-stuff-i-dont-want-to-type_old
これは次のとおりです。
mv name-with-stuff-i-dont-want-to-type name-with-stuff-i-dont-want-to-type_old
プレフィックス:
ls
name-with-stuff-i-dont-want-to-type
mv {,new_}name-with-stuff-i-dont-want-to-type
ls
new_name-with-stuff-i-dont-want-to-type
ファイル名を簡単に変更するには:
ls
fileFOOname
mv file{FOO,BAR}name
ls
fileBARname
答え2
の場合、zsh
通常は以下を使用しますzmv
。
autoload zmv # in ~/.zshrc
zmv 'name*' 'tmp_$f'
答え3
複数のファイルが一致するname*
場合は、$tmp
その名前をすべてスペースで区切って含めます。代わりに、それを$tmp
配列として扱い、その中の各要素に対して操作を実行します。
for file in $tmp; do
mv "$file" "new_$file"
done
スペースを含む名前が複数の名前に分割されないようにするには、二重引用符を使用してください。