Я понимаю, что название, возможно, не было ясным, но я не мог найти лучший способ выразить это.По сути, я хотел бы знать, можно ли указать оболочке
a) переместить первые четыре файла в каталог a
b) переместить вторую группу из четырех файлов в каталог bи т. д. для примерно тысячи файлов.
Однако имена каталогов a и директории b (и всех остальных) не имеют ничего общего, поэтому я понимаю, что мне придется создать скрипт, который следит
a) количество перемещенных файлов,
b) количество каталогов, в которых уже есть все необходимые файлы, и
c) в какой каталог записать следующий(Я предполагаю, что это будет связано с каким-то назначенным оболочкой числовым упорядочением каталогов).
Кроме того, это усложняется тем фактом, что не все каталоги будут иметь четыре файла, связанных с ними в конце, поэтомуМне нужен какой-то способ сообщить оболочке, что эти каталоги завершены (то есть они содержат все файлы, которые с ними связаны).
Спасибо за ваше времяme.
РЕДАКТИРОВАТЬ: Файлы, которые должны быть перемещены, являются .zip файлами, в форме 'x_y_z.zip', где
x = строка, общая для всех файлов
y = строка, которая определяет, какой файл принадлежит какой группе
z = строка, уникальная для каждого n-го файла в каждой группе.
Некоторые группы содержат меньше файлов,но никогда не бывает группы, в которой более четырех файлов.
Что мне нужно сделать, так это просмотреть каталог, файл за файлом и переместить файлы .zip, которые совместно используют «y», в другой каталог.который содержит эту группу и только эту группу.Проблема, с которой я сталкиваюсь, состоит в том, что имена каталогов не могут содержать «y», и поэтому мне нужен способ получить уведомление оболочки, когда «y» изменилось, и переместить файл в следующий каталог в списке.
РЕДАКТИРОВАТЬ 2: Итак, я в общих чертах разработал то, что мне нужно сделать - если я могу поместить все имена zip-файлов в файл .txt и все имена целевых каталогов в другой, я могу сказатьоболочка для чтения из directory.txt и использования его в качестве цели команды mv.Единственная проблема, с которой я сталкиваюсь, - как заставить оболочку переходить в следующий каталог, когда меняется «y», но я думаю, что справился с этим.Все, что мне сейчас нужно, это команда mv первого файла в file.txt в первый каталог в directory.txt.Вот что у меня есть:
!/bin/bash
cd ~/Downloads/ZIP
ls -rt *.zip > file.txt
a=1
for i in *.zip
do
mv 'line a of file.txt' 'line a of directory.txt'
let a=a+1
done
Команда ls -rt необходима, потому что, хотя файлы имеют какую-то систему идентификации, она не имеет абсолютно никакого отношения к используемой мной системе id,но, к счастью, я создал файлы в том порядке, в котором каталоги перечислены в файле directory.txt.