Как я могу переместить файлы в папку с определенным шаблоном к папке назначения?
Я хочу переместить файлы с именами в диапазоне [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
Используйте выражение шарика:
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
Вы можете использовать 'для петли':
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
команда к петле.