создать эти файлы с помощью этойя хочу переименовать более 20k файлов с помощью сценария, но он не: «список аргументов слишком длинный»
for((i=0;i<20000;i++)
do
touch "www.google.com electronic&information this is bash test ${date} .txt"
done
Тогда, я хочу сделать вместо «www.google.com "до" HNSD ". в файлах 20 тыс., Все имена файлов включают пробелы.
Моя первая попытка была следующая:
rename 's/www.google.com/HNSD/g' *
... но это дало в "список аргументов слишком длинный" ошибка.
Моя вторая попытка следующее:
#!/bin/bash
function _rename()
{
while read line1; do
#rename 's/www.google.com/HNSD/g' $line1
sed -i "s/www.google.com/HNSD/g" $line1
#echo $line1
done
}
ls -1 | _rename
... но это не переименовывает файлы, указанные. Как это сделать?
Не используйте 'Ls -1' в сценариях. Не используйте 'read' без' IFS = 'перед ним и аргумент' -r' после него. Не используйте аргументы без кавычек. И не ясно, как вы получите эту ошибку, если у вас не было более длинного списка аргументов, чем будет помещено в одну строку, переданную команде (например, 'sed') как * одиночная * строка, поскольку слишком длинный список аргументов, ошибка основана на argv каждой отдельной внешней команды. –
И 'sed -i' вообще не переименовывает файлы; скорее, это изменяет их содержание - так что неясно, как вы ожидаете, что этот скрипт выполнит вашу заявленную цель. –
Кроме того, не используйте ключевое слово 'function' - это делает ваш код несовместимым с POSIX sh без добавления каких-либо преимуществ по сравнению с совместимым синтаксисом. –