перемещение файлов из списка .txt с частичным именем

Я пытаюсь переместить набор файлов из одного каталога в другой.

У меня есть список .txt с ЧАСТИЧНЫМ именем файлов (по одному в строке), которые я хочу переместить.

Пример:

-> имя файла: "00012377000160-52200308419 -20100101-20101231-G-E92F9BA0A0C932C331273FCD845719813F0B617-1-GTOGR-FDS.txt"

-> то, что у меня есть из имени файла в моем .txt файле: E92F9BA0A0C932C331273FCD845719813F0B617

Это кажется простым, я должен: 1- найти файлы, имена которых СОДЕРЖАТ строки, которые хранятся в моем .txt файле 2- затем переместить их в каталог

Но..... Я делаю что-то не так (может быть, порядок расширения?)....

Вот как я пытаюсь:

for PARTNAME in `cat LIST.TXT`; do mv *"$PARTNAME"* /NEWDIR ; done

Подстановочные знаки * (любые после или перед ЧАСТИЧНЫМ именем файла) не работают .... они рассматриваются как часть имени файла, установленного

Любая помощь будет оценена!!!


person silvio    schedule 26.09.2013    source источник


Ответы (1)


Просто:

while read -r PART; do
    mv *"$PART"*.txt /NEWDIR
done < list.txt

Кроме того, хотя я не рекомендую разбивать слова, чтобы заставить ваш код работать, нужно просто правильно разместить знак $ вместе с параметром:

for PARTNAME in `cat LIST.TXT`; do mv *"$PARTNAME"* /NEWDIR ; done
person konsolebox    schedule 26.09.2013
comment
Это сработало !!! Спасибо !!! Кстати, вы знаете, почему то же расширение *$PART*.txt не работало с CAT?? - person silvio; 27.09.2013
comment
Не уверен, разве это не должно быть *"PARTNAME"*? Если вы имеете в виду свою исходную команду, то есть. Какую полную команду вы использовали? - person konsolebox; 27.09.2013