2013-03-24 4 views
0

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

пример

Перед

dir1 - one.txt one.rtf two.txt two.rtf other.txt other.rtf 

После

dir1 - one two other 

dir1/one - one.txt one.rtf 

dir1/two - two.txt two.rtf 

dir1/other - other.txt other.rtf 

Я ранее сколотить файл в папку сценария, но им не уверен, как получить его, чтобы положить несколько файлов в 1 папку

heres файл в код папки.

#!/bin/bash 

dir="/home/user1/Desktop/f2f/" 

for file in ${dir}/* 
do 
     mkdir -p "${file/./#}" 
     mv "${file}" "${file/./#}/" 
done 

в любом случае, любая помощь будет оценена, именования и расширения файлов всегда будет то же самое, если это помогает

ответ

0

Я не очень уверен, что цель вашего оригинального сценария, как вы, кажется, создайте папки для каждого <file>.<extension> с именем <filename>#<extension>, где вы затем разместите <file>.<extension>.

Я думаю, какую версию вы ищете это один:

for file in * 
do 
    mkdir -p ${file%.*} 
    mv $file ${file%.*}/ 
done 

Обязательно используйте ungreedy вариант Wiht одного %, как вы только хотите, чтобы удалить самый последний компонент из (!) имя файла.

Представьте себе файл с именем first.part.second.part.txt, где вы хотите удалить только .txt.

Учитывая следующее расположение папки до (find dir1):

dir1/ 
dir1/two.txt 
dir1/one.rtf 
dir1/two.rtf 
dir1/other.txt 
dir1/other.rtf 
dir1/one.txt 

Это приведет к следующему aftwards макета (find dir1 снова):

dir1 
dir1/other 
dir1/other/other.txt 
dir1/one 
dir1/one/one.rtf 
dir1/one/one.txt 
dir1/two 
dir1/two/two.txt 
dir1/two/two.rtf 

Если это то, что вы искали.

+0

Да, это то, что я искал благодаря – user1944817

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