Linux下如何批量将文件夹名称中的某些字符串删去

Linux下如何批量将文件夹名称中的某些字符串删去,第1张

可以通过shell脚本来实现,脚本中的命令如下

for file_old in `ls`do

file_new=`echo "$file_old" | sed 's/The//g'`

mv $file_old $file_new

这样就把文件名中含有The的文件转变为了不含The的文件

Linux文件中出现^M字符一般是因为这个文件曾经是在Windows系统中编辑保存的,在Windows中编辑保存的文本文件的回车符是CR和LF两个符号,而Linux文件中的回车符只是一个LF符号,所以当Windows的文本文件放到Linux后,回车的位置会多出来一个^M的符号(Linux的文本文件在Windows上打开,在回车的位置上变成了一个方块并且回车不会换行)。

去除^M字符的方法是在Linux上用dos2UNIX命令对文件进行转换,将文本文件转换为适合Linux的格式(也有的Linux发行版没有安装dos2UNIX命令,需要用yum install unix2dos或apt-get install unix2dos命令来安装它,注意unix是小写)。dos2UNIX命令的用法是:

dos2UNIX -k -n 原来的文件名 转换后的新文件名

命令选项说明:

-k选项:表示保留文件原来的mtime时间格式,一般会加上这个参数

-n参数:保留旧文件并输出到一个新文件

转换后的新文件打开就没有^M字符了。

在Linux系统中,许多元字符,如分号(semicolon),空格(space),反斜线(backslash),美元符号(dollar sigh),问号(question mark),星号(asterisk) 通常被解释为命令,-(dashes)或者--被解释为命令的选项,通过以下的方式就可以复制、移动、删除带-或者--的文件,:

1、首先,创建文件,创建前缀带-或--文件不能直接使用touch命令,因为会被解释为命令的选项,所以得用追加的形式创建:

[root@linuxidc tmp]# echo >-foo.txt

[root@linuxidc tmp]# echo >-bar.txt

创建文件后,如果使用ls命令尝试通配符的方式列出文件,则会出现以下报错:

[root@linuxidc tmp]# ls -l *.txt

ls: invalid option -- '.'

Try 'ls --help' for more information.

需要在命令加入--分界符选项,分隔开选项和参数:

[root@linuxidc tmp]# ls -l -- *.txt

-rw-r--r--. 1 root root 2192022 Jan 9 09:03 137k.txt

-rw-r--r--. 1 root root 1 Jan 9 16:36 -bar.txt

-rw-r--r--. 1 root root 1 Jan 9 16:36 -foo.txt

相对应的,复制与移动文件的命令使用如下:

[root@linuxidc tmp]# cp -- -foo.txt /opt/

[root@linuxidc tmp]# mv -- -bar.txt /opt/


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7446389.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-05
下一篇 2023-04-05

发表评论

登录后才能评论

评论列表(0条)

保存