сценарий linux bash для создания папки и перемещения файлов [дубликат]

На этот вопрос уже есть ответ:

Здравствуйте, мне нужно создать папку на основе имени файла и в этой папке создать еще одну, а затем переместить файл во вторую папку

пример:

cat.jpg
create folder cat
create folder picture
move cat.jpg to picture 

все мои файлы .jpg находятся в

/ root / Desktop / My_pictures

, поэтому он должен выглядеть так:

пример изображения "cat.jpg"

/root/Desktop/My_pictures/cat/pictures/cat.jpg

Извините, если я не совсем точен, но английский - не мой родной язык.

С уважением и благодарностью

3
задан 27 March 2014 в 02:12

2 ответа

Можно также удалить ls *.jpg и просто использовать globbing оболочки:

#!/bin/bash

for full_filename in *jpg; do
  extension="${full_filename##*.}"
  filename="${full_filename%.*}"
  mkdir -p "$filename/picture"
  mv "$full_filename" "$filename/picture"
done

создают и работают этот сценарий в /root/Desktop/My_pictures.

6
ответ дан 17 November 2019 в 19:19

Аналогичный подход:

#!/usr/bin/env bash

## iterate through each file whose name ends in 'jpg'
## saving it as $file. ~ is your $HOME directory
for file in ~/Desktop/My_pictures/*jpg
do
    ## basename will remove the path (~/Desktop/My_pictures) and also
    ## remove the extension you give as a second argument    
    name="$(basename "$file" .jpg)"

    ## create the directory, the -p means it will create 
    ## the parent directories if needed and it won't complain
    ## if the directory exists.
    mkdir -p ~/Desktop/My_pictures/"$name"

    ## copy the file to the new directory
    mv "$file" "~/Desktop/My_pictures/$name"
done

Сохраняют сценарий выше как, например, ~/movefiles.sh, делают его исполняемым файлом с chmod +x movefiles.sh и выполняют его:

~/movefiles.sh
3
ответ дан 17 November 2019 в 19:19

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

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