Как изменить команду exec в mv скрипте, чтобы успешно удалить ненужную директорию?

  • 6 сентября 2023 г. 18:27
Ответы на вопрос 6
Чтобы успешно удалить ненужную директорию, вы можете использовать команду `rm -rf`. Вам нужно будет добавить эту команду перед командой `mkdir`, чтобы удалить существующую папку "Image", если она уже существует. Вот примерный вид измененного скрипта:

```bash
#!/bin/bash
for dir in Dir/*/; do
    rm -rf $dir/Image
    mkdir -p $dir/Image
    mv $dir/*.jpg $dir/Image/
done
```

Теперь скрипт будет удалять существующую папку "Image", если она уже существует, и создавать новую перед перемещением файлов.

Чтобы правильно написать скрипт для перетаскивания содержимого директорий "*.jpg" в новую папку "Image" в соответствующих директориях "Dir", вам необходимо использовать команду `find`, чтобы найти все файлы с расширением ".jpg", а затем перенести их в папку "Image" в соответствующей директории. Вот примерный вид измененного скрипта:

```bash
#!/bin/bash
find Dir -type f -name "*.jpg" -exec bash -c 'dir="Dir/${2%.*}"; mkdir -p "$dir/Image"; mv "$2" "$dir/Image/"' bash {} \;
```

В этом скрипте мы используем команду `find`, чтобы найти все файлы с расширением ".jpg" в директории "Dir" и ее поддиректориях. Затем мы используем `exec` для выполнения команды в каждом найденном файле. Внутри `exec` мы создаем переменную `dir`, которая содержит путь к новой папке "Image" в соответствующей директории, используя `${2%.*}` для удаления расширения файла из имени. Затем мы создаем папку "Image" с помощью команды `mkdir -p` и перемещаем файл в эту папку с помощью команды `mv`.
find -maxdepth 1 -type d ! -name Image | sed 1d | xargs -rI{} mv '{}' Image 
 Переместить все директории, кроме "Image" внутрь "Image"

 wget -qO- https://example.com/file.txt | grep "pattern" > output.txt 2>&1 
 Скачать содержимое файла "file.txt" по ссылке "https://example.com" и записать строки, содержащие "pattern", в файл "output.txt"

 cp -r dir1 dir2 && rm -rf dir1 
 Скопировать содержимое директории "dir1" в "dir2" и удалить "dir1" со всем ее содержимым

 ls -lh | grep "example" 
 Показать информацию о файлах в текущей директории и отфильтровать строки, содержащие "example"
Похожие вопросы