Как скопировать файлы в папки с одинаковыми именами, сравнив имена файлов с именами папок? - PullRequest
0 голосов
/ 27 сентября 2018

Я пытаюсь сравнить имена файлов и папок, которые находятся в одной папке, чтобы скопировать файлы в папки с одинаковыми именами.

На данный момент это мой код:

Тестовый файл /имена папок: sth (папка) sth2.fastq sth.fastq

for fname in *.fastq; do
    for f in */; do
        if "${fname%.*}"=="$f"; then
            -exec cp $fname /${f} \;
        fi
    done
done  

Когда я запускаю код, я получаю эту ошибку:

. / script.sh: строка 3: sth2 ==sth /: Нет такого файла или каталога ./script.sh: строка 3: sth == sth /: Нет такого файла или каталога

Спасибо за вашу помощь.

1 Ответ

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

Скажем так:

for fname in *.fastq; do
    #Getting rid of the extension
    locfname=${fname%.*}
    #Getting rid of numbers if any
    locdirname=${locfname//[0-9]*}
    #Creating the directory if it doesn't exist
    if [[ ! -d $locdirname ]]; then
        mkdir $locdirname
    fi
    #Moving file in the proper directory (can use cp instead)
    mv $fname $locdirname
done

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...