2013-04-04 2 views
1

У меня есть список файлов в каталоге, как показано ниже.Linux - создание подкаталогов из имен файлов в текущем каталоге

/file1 - filename1.txt 
/file2 - filename2a.txt 
/file2 - filename2b.txt 
/file3 - filename3.txt 
/file4 - filename4.txt 
/file5 - filename5.txt 

Я пытаюсь создать сценарий, который будет анализировать файлы в указанном или рабочем каталоге, создавать папки с именами файлов до тире, если они не уже существуют, и игнорировать этот файл, если они делают. Затем скрипт переместит это имя файла во вновь созданный подкаталог.

Например, список в конечном итоге будет выглядеть следующим образом.

/file1/file1 - filename1.txt 
/file2/file2 - filename2a.txt 
/file2/file2 - filename2b.txt 
/file3/file3 - filename3.txt 
/file4/file4 - filename4.txt 
/file5/file5 - filename5.txt 

Любая помощь будет принята с благодарностью. Спасибо.

+0

Вы можете попробовать с помощью команды 'cut', чтобы получить имя каталога. – fedorqui

ответ

1
#!/bin/bash 
for f in filename* 
do 
    d=$(echo $f | sed 's/filename\([0-9]*\).*/file\1/') 
    [ -d $d ] || mkdir $d 
    mv $f $d 
    echo "$f moved to $d" 
done 
+0

Привет - все файлы изначально находятся в одном каталоге. Я хочу переместить их в отдельные каталоги. –

+0

oh ok - я исправлю – suspectus

+0

Если у вас есть filename2a.txt и filename2b.txt, они объединяются в один файл 'file2/file2'? – suspectus

Смежные вопросы