使用Sed仅删除文件名中的第一个字符(如果它是按字母顺序排列的)

时间:2016-10-13 06:38:32

标签: linux sed cmd

我在一个文件夹中有一堆文件,我需要用另一个名字复制以防万一,如果文件第一个字符是按字母顺序排列的,那么删除这个字符并留下所有其他字符,不管是数字,字母,特殊标记还是随你。这么少的exsapmles:

R123456.txt - >应复制为123456.txt

Y1235465.jpeg - >应复制为1235465.jpeg

736628487.txt - >什么都不做

我使用过这个命令:

for file in * ; do cp  $file $(echo $file |sed 's/[A-Za-z]//g'); done

但这也删除了我想留下的文件扩展名......

BR JII

2 个答案:

答案 0 :(得分:1)

使用

s/^[A-Za-z]//

在缓冲区的开头有一个单独的字母字符

答案 1 :(得分:0)

你也可以试试这个;

<key>NSContactsUsageDescription</key>
    <string>This app requires contacts from phone book.</string>
  

man cp; -n, - no-clobber                 不要覆盖现有文件(覆盖以前的-i选项)

     

2&gt; / dev / null:删除任何“'736628487.txt'都是同一个文件”。

例如:

 for file in * ; do cp -n $file $(echo $file |sed 's/^[A-Za-z]//') 2>/dev/null; done