Linux mkdir、查找和 mv

Linux mkdir, find and mv

伙计们,我必须在 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 循环做什么?创建文件夹并移动所有脚本后,再 运行 就没有意义了。
  2. 为什么要读两次目录名?您可以只读取一次,将其存储在 $name 中并使用它直到脚本结束。
  3. 您不需要查找 *.c 将 select 当前目录中所有以 .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"