使用 mv 命令移动包含空格的文件
Moving files containing spaces with mv command
我有以下输入。
实体可以是'MG SOCRATES''VALIND''SUSBTECT'
此实体具有以下目录。
/home/tca/git/tca/<实体>
示例:
/home/tca/git/tca/MG SOCRATES
/home/tca/git/tca/VALIND
/home/tca/git/tca/SUSBTECT
在每个目录中我都有这种模式的文件 something_or-something。
例如:
/home/tca/git/tca/SUSBTECT/asdsad2018-01-01-2018-12-31sdadsda
/home/tca/git/tca/SUSBTECT/asdsad2018-01-01_2018-12-31sdsadadsda
我想将它们移动到具有以下结构的每个实体的子目录中。
例如,我有这个子目录。
/home/tca/git/tca/SUBTECT/2018-01-01_2018-12-31
我想做的是从 /home/tca/git/tca/SUUSBTECT/ 匹配模式 _or- 的所有文件移动到子目录。
我的代码正确执行,但实体 'MG SOCRATES' 失败,因为有一个 space 移动命令无法解释。
我的代码:
entity_path="$entity_path""/*"$file_start"*"$file_end"*"
echo `mv -t "$path" $entity_path`
其中 $entity_path 所有匹配模式的文件,$path 是我要移动文件的目录。
我认为是关于 space 的问题。
有什么想法吗?
无法进行路径名扩展但不进行分词的常规参数扩展,因此您尝试将模式放入 entity_path
将会失败。要么直接用pattern,
mv -t "$path" "$entity_path"/*"$file_start"*"$file_end"*
或将路径名扩展的结果存储在一个数组中。
entities=( "$entity_path"/*"$file_start"*"$file_end"* )
mv -t "$path" "${entities[@]}"
我有以下输入。
实体可以是'MG SOCRATES''VALIND''SUSBTECT'
此实体具有以下目录。
/home/tca/git/tca/<实体>
示例:
/home/tca/git/tca/MG SOCRATES
/home/tca/git/tca/VALIND
/home/tca/git/tca/SUSBTECT
在每个目录中我都有这种模式的文件 something_or-something。
例如:
/home/tca/git/tca/SUSBTECT/asdsad2018-01-01-2018-12-31sdadsda
/home/tca/git/tca/SUSBTECT/asdsad2018-01-01_2018-12-31sdsadadsda
我想将它们移动到具有以下结构的每个实体的子目录中。
例如,我有这个子目录。 /home/tca/git/tca/SUBTECT/2018-01-01_2018-12-31
我想做的是从 /home/tca/git/tca/SUUSBTECT/ 匹配模式 _or- 的所有文件移动到子目录。
我的代码正确执行,但实体 'MG SOCRATES' 失败,因为有一个 space 移动命令无法解释。
我的代码:
entity_path="$entity_path""/*"$file_start"*"$file_end"*"
echo `mv -t "$path" $entity_path`
其中 $entity_path 所有匹配模式的文件,$path 是我要移动文件的目录。
我认为是关于 space 的问题。
有什么想法吗?
无法进行路径名扩展但不进行分词的常规参数扩展,因此您尝试将模式放入 entity_path
将会失败。要么直接用pattern,
mv -t "$path" "$entity_path"/*"$file_start"*"$file_end"*
或将路径名扩展的结果存储在一个数组中。
entities=( "$entity_path"/*"$file_start"*"$file_end"* )
mv -t "$path" "${entities[@]}"