Linux mkdir,find和mv

时间:2017-06-22 12:51:10

标签: linux find mkdir 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 个答案:

答案 0 :(得分:0)

我不确定你想要实现的目标。但是你的脚本中有一些东西是没有意义的。

  1. 你需要一个while循环?一旦你创建了文件夹并移动了所有脚本,再次运行它是没有意义的。
  2. 为什么要两次读取目录的名称?您只需阅读一次,将其存储在$ name中并使用它直到脚本结束。
  3. 您不需要查找*.c将选择当前目录中以.c结尾的所有文件。
  4. 尽管如此,如果我理解正确,这里的脚本会按照您的要求执行。

    #! /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"