У меня есть каталог с 400 подкаталогами, каждый из которых содержит несколько сотен файлов, многие с именами файлов, которые содержат пробелы. Мне нужно скопировать все файлы с пробелами в именах файлов, в результате чего получаются две копии этих файлов, одна с пробелами и одна с подчеркиванием, заменяющая пробелы. Я вижу много кода, который подходит близко, но ничего, что будет копировать, переименовывать и заменять пробелы рекурсивно. Какие-либо предложения ??? Спасибо....RW Linux переименовать, используя параметры и пробелы? Linux переименовывать с использованием параметров и пробелов?

1 ответ1

1

И все же это не так уж сложно

 for i in "$(find . -type f -name '* *' -print)"; do cp "$i" $(echo $i | sed 's/ /_/g'); done

Это предполагает, что ваши имена каталогов не содержат пробелов. Если они это сделают, будет работать следующий скрипт bash:

  #!/bin/bash

 TGT=/path/to/targt/directory
 LIST="$(find $TGT -type f -name '* *' -print)"
 for i in $LIST; do 
      dirpath=${i%/*}
      base=base=${i##*/}
      newbase=$(echo "base" | sed 's/ /_/g')
      cp "$i" $dirpath/$newbase
 done

Если имена ваших каталогов содержат пробелы, и вы хотите, чтобы они дублировались, вам придется лучше указать, что вы хотите дублировать: исходные и новые файлы, только новые, возможно, другие файлы без пробелов ...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .