переместите файлы, соответствующие определенному шаблону

Как я могу переместить файлы в папку с определенным шаблоном к папке назначения?

Я хочу переместить файлы с именами в диапазоне [00-09] в 4-м столбце при разделении разделителем "-".

ls | cut -d "-" -f 4 | grep ^[00-09]

Шоу эти файлы:

UNCID_376947.TCGA-DD-A118-01A-11R-A131-07.110525_UNC12-SN629_0087_BC03HWABXX.7.trimmed.txt
UNCID_377115.TCGA-CC-5263-01A-01R-A131-07.110525_UNC12-SN629_0087_BC03HWABXX.5.trimmed.txt
UNCID_377252.TCGA-DD-A114-11A-12R-A131-07.110525_UNC12-SN629_0087_BC03HWABXX.6.trimmed.txt
3
задан 20 October 2015 в 13:22

2 ответа

Используйте выражение шарика:

mv your_dir/*?-*?-*?-0[0-9]* new_dir/

, Чтобы проверить его, Вы можете во-первых выступить ls your_dir/*?-*?-*?-0[0-9]*, чтобы удостовериться, что это соответствует файлам, которые Вы хотите.

средства выражения *?-*?-*?-0[0-9]*: знаки + - три раза и затем 0 и любой знак.

Тест

$ ls
another_dir/  aa-03A-b  aa-b-03A-b  aa-b-c-03A-b  a-b-c-03A-b  a-b-c-23A-b
$ mv *?-*?-*?-0[0-9]* another_dir/
$ ls another_dir/
aa-b-c-03A-b  a-b-c-03A-b
10
ответ дан 1 December 2019 в 13:03

Вы можете использовать 'для петли':

for FILE in 'file-list'
do
  echo "$FILE"
  mv "$FILE" /your/destination/
done

Объяснение:

'file-list' должен быть заменен методом, чтобы получить список файлов, которые Вы хотите использовать. Например $(cat files.txt), если у Вас уже есть список в файле, pattern*, если файлы в Вашем справочнике начинаются с того же образца или $(find -iname "*pattern*"), если Вы хотите использовать, находят, чтобы получить список.
продукция будет сохранена в переменной FILE один элемент после другого. Команды между do и done выполнены за каждый элемент. Вы можете использовать echo "$FILE", чтобы проверить, соответствует ли Ваша команда правильным файлам прежде, чем добавить эти mv команда к петле.

2
ответ дан 1 December 2019 в 13:03

Другие вопросы по тегам:

Похожие вопросы: