【问题标题】:Linux mkdir, find and mvLinux mkdir,查找和 mv
【发布时间】:2017-06-22 12:51:09
【问题描述】:

所以伙计们,我必须在 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.

你能帮我找到解决办法吗?

【问题讨论】:

  • 您需要说出您需要帮助的内容。你有一个脚本。美好的。它有什么问题?
  • 当我尝试执行它时,它不起作用。它没有创建一个新目录,而且它说 mv: failed to access '': No such file or directory
  • 你想要read -p name,而不是read -p "$name"
  • 改了还是一样

标签: linux find mkdir mv


【解决方案1】:

我不太确定您要达到的目标。但是您的脚本中有几处没有意义。

  1. 你需要一个while循环做什么?创建文件夹并移动所有脚本后,再运行它就没有意义了。
  2. 为什么要两次读取目录名称?您可以只阅读一次,将其存储在 $name 中并使用它直到脚本结束。
  3. 你不需要find*.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"

【讨论】:

  • OP 没有指定他想从 current 目录中移动文件。据我了解,他想收集当前目录及以下(子目录)中的所有*.c文件。
  • 是的,这个完美。非常感谢您的帮助
猜你喜欢
  • 2018-11-30
  • 1970-01-01
  • 2012-05-08
  • 2022-12-16
  • 2016-06-13
  • 1970-01-01
  • 2013-11-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多