【问题标题】:BASH: copy all the files of a folder to other folderBASH:将一个文件夹的所有文件复制到另一个文件夹
【发布时间】:2021-11-25 21:05:10
【问题描述】:

我想将扩展名为 .ipynb 的笔记本从一个文件夹复制到另一个文件夹。 我正在编写我的第一个 bash script.sh

CURRENT=${PWD}
cp "$CURRENT/notebooks/*.ipynb" "/home/jovyan/shared/public/whatever"

结果:

cp: cannot stat '/home/name/utils/notebooks/*.ipynb': No such file or directory

但是 '/home/name/utils/notebooks/ 存在 它有笔记本。

这里的命令哪里出错了?

是否也可以构建一个命令告诉“所有以 py 开头的笔记本”

谢谢

【问题讨论】:

  • 引用的 glob 不会扩展,请使用 "$CURRENT/notebooks/"*.ipynb
  • 还有./notebooks/*.ipynb而不是$PWD
  • 抱歉编辑了这个问题,我添加了另一个问题。也许对你来说很容易。这是我的第一个 bash 脚本

标签: bash shell copy


【解决方案1】:

你可以简单地写

cp notebooks/*.ipynb "/home/jovyan/shared/public/whatever"

【讨论】:

    【解决方案2】:

    引用的 glob 不会扩展。

    所有以py开头的notebook

    这会将文件移动到当前主目录中的路径:

    cp ./notebooks/py*.ipynb ~/shared/public/whatever/
    

    如果您需要某个特定用户的主目录(无论谁在运行该命令),您可以使用:

    cp ./notebooks/py*.ipynb ~jovyan/shared/public/whatever/
    

    您可能还需要完整路径:

    cp ~/utils/notebooks/py*.ipynb ~/shared/public/whatever/
    

    波浪号扩展的解释:~(未加引号)扩展为当前用户的主目录,而~jovyan 扩展为用户jovyan 的主目录,即使您以其他用户身份登录.波浪号扩展是 feature of the POSIX shell,而不是 bash 特定的。

    【讨论】:

    • 这里的路径不需要./ 前缀。它基本上意味着“在/从当前目录开始”,这在大多数情况下都是隐含的,包括这个。 (在某些情况下它不是隐式的,而这些情况下您可能需要./ 前缀。)
    • 是的,我只是喜欢相对路径包含多个元素(子目录)。
    猜你喜欢
    • 2019-02-15
    • 2014-09-17
    • 2017-03-01
    • 1970-01-01
    • 2020-05-24
    • 2011-08-22
    • 2015-01-20
    • 1970-01-01
    • 2023-01-14
    相关资源
    最近更新 更多