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