buildah :неизвестный сокращенный флаг :'i' в -i

Ваш код излишне сложен. Я считаю, что проблема в том, что вы не можете вызвать mv, если каталог назначения еще не существует. Вы также, кажется, пытаетесь переместить что-то в каталог в корневом каталоге.

Рассмотрим

#!/bin/sh

for suffix do
    mkdir -p -- "$suffix" || exit 1
    mv -- *."$suffix" "$suffix"
done

или,

#!/bin/bash

suffixes=( "$@" )

for suffix in "${suffixes[@]}"; do
    mkdir -p -- "$suffix" || exit 1
    mv -- *."$suffix" "$suffix"
done

(Измените exit 1на continue, если вы хотите перейти к следующему указанному суффиксу, когда каталог не может быть создан, вместо того, чтобы завершить скрипт ).

Это зациклило бы на всех суффиксах имен файлов (не совсем типы файлов поскольку тип файла в Unix — это такие вещи, как «обычный файл», «каталог», «символическая ссылка» и т. д. ), создаст в текущем каталоге подкаталог с именем этого суффикса, а затем переместит все файлы с именами, оканчивающимися на ."$suffix", в этот каталог.

Команда mkdir -p dirnameне завершится ошибкой, если каталог dirnameуже существует.

Пример запуска:

$ tree
.
|-- file1.mp3
|-- file1.png
|-- file1.txt
|-- file2.mp3
|-- file2.png
|-- file2.txt
|-- file3.mp3
|-- file3.png
|-- file3.txt
|-- file4.mp3
|-- file4.png
|-- file4.txt
|-- file5.mp3
|-- file5.png
|-- file5.txt
`-- script.sh

0 directory, 16 files
$./script.sh txt mp3
$ tree
.
|-- file1.png
|-- file2.png
|-- file3.png
|-- file4.png
|-- file5.png
|-- mp3
|   |-- file1.mp3
|   |-- file2.mp3
|   |-- file3.mp3
|   |-- file4.mp3
|   `-- file5.mp3
|-- script.sh
`-- txt
    |-- file1.txt
    |-- file2.txt
    |-- file3.txt
    |-- file4.txt
    `-- file5.txt

2 directories, 16 files
1
18.11.2020, 21:50
0 ответов

Теги

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