Как сопоставить частично совпадающие имена файлов из двух каталогов и выполнить команды на найденном - PullRequest
0 голосов
/ 18 мая 2019

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

Имена файлов не совпадают точно, они получают «_ica» в конце имени и другое расширение.

Я попытался написать сценарий, который просматривает dir1, проверяет, находится ли он в dir2. и если найдено, перейдите к dir3:

DATA= /home/eegfilesonlyWM/*
PROCESSED= /home/eegfilesonlyWM/icaddata/*

DONE= /home/eegfilesonlyWM/done/

for f in $DATA ; do 
  fname=${f##*/}
  fname=${fname%/}

 find /home/eegfilesonlyWM/icaddata/ -iname  "${fname*_ica*}" -type f -exec mv {} ./done \; 

done 

Я хотел бы скопировать из первого каталога те файлы, которые уже имеют соответствующие файлы во втором каталоге.

Спасибо за любую помощь

1 Ответ

0 голосов
/ 18 мая 2019

Может быть, это будет делать то, что вы хотите:

#!/usr/bin/env bash

#Directory paths here
DATA=./DATA
PROCESSED=./PROCESSED 
DONE=./DONE

#Do the test and copy here
for f in `ls -1 $DATA`; do
    #build output name
    p="$PROCESSED/${f/\.xxx/}";    #xxx is the file extension of original
    p="${p}_ica.yyy";              #yyy is the file extension of the processed
    if [ -f  $p ] ; then           
        cp $DATA/$f $DONE
    fi
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...