Подсчитайте символы имени файла, затем скопируйте эти файлы в другой каталог - PullRequest
0 голосов
/ 28 апреля 2018

Мне нужно написать скрипт bash, который копирует файлы в dir2 , которые соответствуют количеству символов в их имени файла с заданным значением int, заданным в качестве аргумента сценария. Я пытался что-то сделать, но мне не удалось скопировать файлы вообще.

read number

list=`for file in *; do echo  -n "$file" | wc -m; done`

for file in $list

do

if [ $file -eq $number ]

then

cp file dir2

fi

done

1 Ответ

0 голосов
/ 28 апреля 2018

В вашем коде list - это список длин файлов, а не имен файлов. Так что $ file это просто число. Вы также пропустили ведущий $ на $file.

Вам не нужно использовать программу wc, вы можете получить длину имени переменной, используя ${#name}. Я думаю, вам нужно что-то вроде этого:

while [[ $number != +([0-9]) ]]
do
    read -p "Enter number: " number
done

for file in *
do

    if (( ${#file} == $number ))
    then
        cp "$file" dir2
    fi

done
...