关于Linux中文件名中带有空格问题分析
因为有的时候,文件或目录带有空格总是操作不便。下面的方法在cp,mv等命令中都可以使用。
方法一:使用shell脚本即linux命令符执行,需要将带有空格的文件或目录使用单引号或双引号引起来。
mv '/data/kara/wyq/bak_bak/bak_m4a/韩红-青藏 高 原-伴奏.m4a' /data/kara/wyq/bak_bak/bak_m4a/韩红-青藏高原-伴奏.m4a
mv /data/kara/wyq/bak_bak/bak_m4a/'韩红-青藏 高 原-伴奏.m4a' /data/kara/wyq/bak_bak/bak_m4a/韩红-青藏高原-伴奏.m4a
方法二:也可以直接对所有文件或目录名的空格加入转义字符。
mv /data/kara/wyq/bak_bak/bak_m4a/韩红-青藏\ \ 高\ \ 原-伴奏.m4a /data/kara/wyq/bak_bak/bak_m4a/韩红-青藏高原-伴奏.m4a
扩展:关于php处理带有空格的文件或目录问题。
直接用双引号或单引号引起来即可,也即是php可以直接识别文件或目录中的空格,不会引起语法上的歧义,下面给出处理空格文件相关代码实例。
案例一:
rename("/data/he ee ee.txt",'/usr/se.txt')
循环改变某个目录下的文件,将其全部改为删除空格后的文件名。
案例二:
<?php
/*去除空格案例*/
$source = opendir('/data/kara/wyq/bak_m4a');
while($row = readdir($source)){
if($row =='.' || $row =='..'){continue;}
$newfile = str_replace(' ','',$row);
exec("mv /data/kara/wyq/bak_m4a/\"$row\" /data/kara/wyq/bak_m4a/$newfile",$a,$b);//注意如果使用shell等外部脚本解析执行,那么带空格的文件名需要使用引号引起来
}
?>
案例三:
$source = opendir('/data/kara/wyq/bak_bak/bak_m4a');
while($row = readdir($source)){
if($row =='.' || $row =='..'){continue;}
$newfile = '/data/kara/wyq/bak_bak/bak_m4a/'.str_replace(' ','',$row);
$oldfile = '/data/kara/wyq/bak_bak/bak_m4a/'.$row;
//$oldfile = '/data/kara/wyq/bak_bak/bak_m4a'.str_replace(' ','\ ',$row);
$re = rename($oldfile,$newfile);
var_dump($re);
}