Bash 使用mv命令移动包含空格的文件

Bash 使用mv命令移动包含空格的文件,bash,move,Bash,Move,我有以下输入 实体可以是“MG”“VALIND”“susbect” 此实体具有以下目录 /主页/tca/git/tca/ 例如: /home/tca/git/tca/MG SOCRATES /home/tca/git/tca/VALIND /home/tca/git/tca/SUSBTECT 在每个目录中,我都有带有这种模式的文件 例如: /home/tca/git/tca/SUSBTECT/asdsad2018-01-01-2018-12-31sdadsda /home/tca/git/tc

我有以下输入

实体可以是“MG”“VALIND”“susbect”

此实体具有以下目录

/主页/tca/git/tca/

例如:

/home/tca/git/tca/MG SOCRATES
/home/tca/git/tca/VALIND
/home/tca/git/tca/SUSBTECT
在每个目录中,我都有带有这种模式的文件

例如:

/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/SUSBTECT/2018-01-01\U 2018-12-31

我想做的是从/home/tca/git/tca/SUSBTECT/所有与模式_或-匹配的文件移动到子目录

我的代码对实体“MG SOCRATES”的操作正确,但失败,因为有一个空格是moves命令无法解释的

我的代码:

    entity_path="$entity_path""/*"$file_start"*"$file_end"*"
    echo `mv -t  "$path" $entity_path`
其中$entity\u path是匹配模式的所有文件,$path是我要移动文件的目录

我认为这是一个关于空间的问题


有什么想法吗?

没有办法让常规参数扩展进行路径名扩展,而不是分词,因此您尝试将模式放入
实体路径中的尝试将失败。要么直接使用模式

mv -t "$path" "$entity_path"/*"$file_start"*"$file_end"*
或者将路径名扩展的结果存储在数组中

entities=( "$entity_path"/*"$file_start"*"$file_end"* )
mv -t "$path" "${entities[@]}"

没有办法让常规参数扩展进行路径名扩展,但不能进行分词,因此您尝试将模式放入
entity\u path
将失败。要么直接使用模式

mv -t "$path" "$entity_path"/*"$file_start"*"$file_end"*
或者将路径名扩展的结果存储在数组中

entities=( "$entity_path"/*"$file_start"*"$file_end"* )
mv -t "$path" "${entities[@]}"

阅读
bash
手册
echo`mv-t…`
的一节并没有完成任何有用的事情。只要使用
mv-t…
。据我所知,您只需要
mv-t“$path”“$entity\u path”/*.
。不要尝试将模式嵌入变量中。参数扩展不能进行路径名扩展,而不能进行分词。@chepner我认为这就是问题所在,在那里执行模式可以正确地处理没有空格的实体,但是对于带有空格的实体,它不起作用……阅读
bash
manual
echo`mv-t…`
的部分并不能完成任何有用的事情。只要使用
mv-t…
。据我所知,您只需要
mv-t“$path”“$entity\u path”/*.
。不要试图将模式嵌入变量中。参数扩展不能进行路径名扩展而不能进行分词。@chepner我认为这就是问题所在,在那里执行模式对没有空格的实体正确有效,但对有空格的实体无效。。。