【问题标题】:How to move all folders in a directory with mv and bash variables如何使用 mv 和 bash 变量移动目录中的所有文件夹
【发布时间】:2022-04-28 22:43:17
【问题描述】:

我想从我们从用户那里获得的文件中获取目录路径作为函数的参数,并从文件中提取路径并将源目录中的所有文件和文件夹移动到目标目录,但是出了点问题:它写信给我,那\“没有这样的文件或目录\”

有了这个输入

其中 dest_adr.txt 包含此路径:C:\\Users\\Michal\\Desktop\\tmp 和 source_adr.txt 包含此路径:C:\\Users\\Michal\\Desktop\\test\\

#!/bin/bash

FILE_WITH_ADRESS_TO_BLENDER_PATH=$1
FILE_WITH_ADRESS_TO_FOLDER_WITH_ADDONS=$2

function move_folders(){    
    mv \"${PATH_TO_FOLDER_WITH_ADDONS_}\"/* \"${PATH_TO_BLENDR_DIRECTORIE_}\"/
}   

if [  $# -eq 0 ]
  then
      PATH_TO_BLENDR_DIRECTORIE=\"C:/Program Files/Blender Foundation/Blender 3.0/3.0/scripts/addons\"
      FOLDER_WITH_ADDONS=\"none\"
      echo $PATH_TO_BLENDR_DIRECTORIE
      echo $FOLDER_WITH_ADDONS
  else  
      PATH_TO_BLENDR_DIRECTORIE_=$(cat $FILE_WITH_ADRESS_TO_BLENDER_PATH | sed -e \'s/\\\\/\\//g\' -e \'s/\\C://g\')
      PATH_TO_FOLDER_WITH_ADDONS_=$(cat $FILE_WITH_ADRESS_TO_FOLDER_WITH_ADDONS | sed -e \'s/\\\\/\\//g\' -e \'s/\\C://g\')
      echo $PATH_TO_BLENDR_DIRECTORIE_
      echo $PATH_TO_FOLDER_WITH_ADDONS_
      move_folders
  fi
  • 您是否检查过 test/ 仍有文件,如果您运行脚本,它们将全部移动到您的目的地
  • 请不要发布文字图片。只需将文本本身放在您的问题中,格式化为代码示例。
  • 请不要发布文字图片。只需将文本本身放在您的问题中,格式化为代码示例。
  • \"folders\" 和 \"directories\" 是不同的东西。你在这里谈论的一切都是一个目录。 “文件夹”一词在这个问题中没有任何位置。
  • 文件夹也称为“目录”,它们是在安装操作系统和应用程序时在硬盘驱动器 (HD) 或固态驱动器 (SSD) 上创建的。文件始终存储在文件夹中

标签: bash directory mv


【解决方案1】:

使用Shell Parameter Expansion

adrian@pc:/tmp/move> path_to_file=/usr/share/man/man1/bash.1.gz
adrian@pc:/tmp/move> folder_path=${path_to_file%/*} 
adrian@pc:/tmp/move> echo $folder_path 
/usr/share/man/man1
adrian@pc:/tmp/move> file_name=${path_to_file##*/}
adrian@pc:/tmp/move> echo $file_name 
bash.1.gz

不要使用 cat 发送变量,它会发送文件内容没有路径,使用 echo 或 printf 代替。

【讨论】:

    【解决方案2】:

    发生错误是因为test/ 目录是空的.

    重试其中的文件。如果您尝试移动的源目录中没有文件,则预期行为会因通配符而失败。

    编辑: 或使用mv -r

    【讨论】:

    • 该目录从一开始就有几个文件夹:(
    • 使用 -r 的 move 来递归您的文件夹
    • test/ 文件夹的tree 的输出?
    猜你喜欢
    • 2016-04-10
    • 1970-01-01
    • 1970-01-01
    • 2011-06-04
    • 2015-03-21
    • 1970-01-01
    • 1970-01-01
    • 2013-07-02
    • 2023-03-31
    相关资源
    最近更新 更多