Линукс мкдир, найди и мв
Итак, ребята, я должен написать этот скрипт в 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 ответ
Решение
Я не совсем уверен, чего вы пытаетесь достичь. Но в вашем сценарии есть несколько вещей, которые не имеют смысла.
- Для чего вам нужен цикл while? После того, как вы создали папку и переместили все скрипты, запускать ее снова нет смысла.
- Почему вы читаете название каталога дважды? Вы можете просто прочитать его один раз, сохранить его в $ name и использовать его до конца скрипта.
- Вам не нужно найти
*.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"