Bash 使用mv命令移动包含空格的文件
我有以下输入 实体可以是“MG”“VALIND”“susbect” 此实体具有以下目录 /主页/tca/git/tca/ 例如: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
/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
manualecho`mv-t…`
的部分并不能完成任何有用的事情。只要使用mv-t…
。据我所知,您只需要mv-t“$path”“$entity\u path”/*.
。不要试图将模式嵌入变量中。参数扩展不能进行路径名扩展而不能进行分词。@chepner我认为这就是问题所在,在那里执行模式对没有空格的实体正确有效,但对有空格的实体无效。。。