Я всегда люблю расширение удара за это:
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
Если существует больше чем одно соответствие файла name*
затем $tmp
содержит все эти имена, разделенные пробелами. Обработка $tmp
как массив вместо этого и воздействуют на каждый элемент в нем:
for file in $tmp; do
mv "$file" "new_$file"
done
Используйте двойные кавычки, чтобы не разделять имена, содержащие whitepace на несколько имен.
tmp=name*
, так $tmp
содержит name*
(с дословной звездой). Это при вызове mv $tmp
(с неупомянутым $tmp
) то, что расширение происходит. В Вашем примере расширение происходит в for
оператор. На самом деле лучше записать for file in name*; do ...
если Вы не хотите использовать массив в качестве в: tmp=( name* ); for file in "${tmp[@]}"; do ...
– gniourf_gniourf
29.10.2013, 20:07
С zsh
, это обычно, что Вы используете zmv
для:
autoload zmv # in ~/.zshrc
zmv 'name*' 'tmp_$f'
name
кому:newname
? – ryanjdillon 29.10.2013, 22:16