【问题标题】:Bash: duplicate + rename folderBash:重复+重命名文件夹
【发布时间】:2016-01-25 10:33:12
【问题描述】:

假设我在/path/to/folder 中有一个名为my_folder_old 的文件夹,如何在同一目录中创建一个名为my_folder_new 的副本?

编辑

此外,如果my_folder_new 已经存在,my_folder_old 将在第一个内部创建并且不会被替换。为什么会这样?

【问题讨论】:

  • cp -rp /path/to/folder/my_folder_old /path/to/folder/my_folder_new 检查:cyberciti.biz/faq/copy-folder-linux-command-line
  • 发生这种情况的原因是,my_folder_new 已经创建。执行相同的 cp 命令,它会看到新路径 /path/to/folder/my_folder_new/。要解决当前情况,请检查目录是否存在并像这样复制: cp -frp /path/to/folder/my_folder_old/* /path/to/folder/my_folder_new/*
  • 好的,谢谢。如果您将解决方案作为答案发布,我可以将其标记为已接受:)
  • 这真的值得投反对票吗?因为第一个链接并没有真正解决我的问题,而 cp man 很详细但也很笼统。
  • 投反对票的不是我 :) 举个例子,为什么有人投反对票链接:meta.stackoverflow.com/questions/252677/…

标签: bash shell directory rename


【解决方案1】:

教程拷贝文件,文件夹链接:link

手动cp命令:Link

cp -frp /path/to/folder/my_folder_old -T /path/to/folder/my_folder_new

   -f, --force
          if an existing destination file cannot be opened, remove it
          and try again (this option is ignored when the -n option is
          also used)
   -p     same as --preserve=mode,ownership,timestamps
   -R, -r, --recursive
          copy directories recursively
   -T, --no-target-directory
          treat DEST as a normal file

虽然如果 my_folder_new 已经存在,my_folder_old 是在第一个内部创建的,不会被替换。为什么会这样?

发生这种情况的原因是,my_folder_new 已经创建。执行相同的 cp 命令,它会看到新路径 /path/to/folder/my_folder_new/

【讨论】:

  • 也许我们可以在.bashrc 中创建一个函数,例如调用dup /path/to/folder 来创建folder_copy_n,其中n 是副本数。该函数将查看path/to/ 以查看folder_copy_<n-1> 是否已存在。
【解决方案2】:

我正在处理同样的问题,快疯了啊哈哈,我尝试了 cp -frp 但没有奏效,所以,在执行 cp 之前,只需使用 rm 删除现有文件夹,请参阅下面有关此的更多信息:

Remove Directory Linux

如果目录或目录中的文件被写保护,系统将提示您确认删除。要在不提示的情况下删除目录,请使用 -f 选项:

rm -rf dir1

【讨论】:

    猜你喜欢
    • 2017-10-02
    • 2012-03-25
    • 2011-01-04
    • 1970-01-01
    • 2015-12-11
    • 1970-01-01
    • 2020-08-29
    • 2017-12-12
    • 2011-12-30
    相关资源
    最近更新 更多