Приступать ко всем именам файлов в каталоге - PullRequest
0 голосов
/ 27 сентября 2018

Цель - добавить текст к каждому имени файла в определенном каталоге, используя его путь.Я не хочу, чтобы это применялось только к текущему каталогу, но будет работать независимо от того, где вы находитесь в дереве файлов.Вот что у меня есть:

for f in `ls path/*`
do 
    mv "&f" "x$f"
done

Вместо того, чтобы перемещать его по тому же пути с новым именем файла с х перед, он пытается переместить его в х / путь (что, очевидно, дает ошибку),и я не могу найти что-нибудь о том, как получить х перед именем файла, чтобы эффективно переименовать файл с х впереди.

1 Ответ

0 голосов
/ 27 сентября 2018

Вы можете полагаться на обе команды basename и dirname:

 for i in path/*; do 
   mv "$i" "$(dirname "$i")/x$(basename "$i")"
 done

Или с расширением параметра bash:

for i in path/*; do 
  mv "$i" "${i%/*}/x${i##*/}"
done

Обе команды добавляют x передимя файла.

...