Линукс мкдир, найди и мв

Итак, ребята, я должен написать этот скрипт в Linux. Я должен создать каталог и посмотреть, существует ли он уже или нет, а затем мне нужно найти все файлы, заканчивающиеся на ".c", и переместить их в каталог, который я создал. Это то, что я до сих пор:

#!/bin/bash

while

    echo "name of the directory you want to create " 

    read -p "$name"; do

    if [ ! -d "$name" ]; then

    {
        echo "Directory doesn't exist. Create: "

        read -p "$name"

        mkdir -p Scripts/"$name" 

    }

    else

        echo "Directory exists"

    fi

    find ./ -name '*.c' | xargs mv -t "$name"

done

Когда я пытаюсь выполнить это, это не работает. Он не создает новый каталог, а также говорит:

mv: failed to access '': No such file or directory.

Можете ли вы помочь мне найти решение этой проблемы?

1 ответ

Решение

Я не совсем уверен, чего вы пытаетесь достичь. Но в вашем сценарии есть несколько вещей, которые не имеют смысла.

  1. Для чего вам нужен цикл while? После того, как вы создали папку и переместили все скрипты, запускать ее снова нет смысла.
  2. Почему вы читаете название каталога дважды? Вы можете просто прочитать его один раз, сохранить его в $ name и использовать его до конца скрипта.
  3. Вам не нужно найти *.c выберет все файлы, заканчивающиеся на .c в текущем каталоге.

С учетом всего сказанного, вот сценарий, который делает то, что вы просили, если я правильно понял.

#! /bin/bash
echo -n "Enter the name of the directory you want to create: "
read name

if [ ! -d Scripts/"$name" ]; then
    echo "Directory doesn't exist. Creating it."
    mkdir -p Scripts/"$name"
else
    echo "Directory exists"
fi

echo "Moving files"
mv *.c Scripts/"$name"
Другие вопросы по тегам