drwxrwxr-x 5 matteorr matteorr 4096 Jan 10 17:37 Cluster
drwxr-xr-x 2 matteorr matteorr 4096 Jan 19 10:43 Desktop
drwxrwxr-x 9 matteorr matteorr 4096 Jan 20 10:01 Developer
drwxr-xr-x 11 matteorr matteorr 4096 Dec 20 13:55 Documents
drwxr-xr-x 2 matteorr matteorr 12288 Jan 20 13:44 Downloads
drwx------ 11 matteorr matteorr 4096 Jan 20 14:01 Dropbox
drwxr-xr-x 2 matteorr matteorr 4096 Oct 18 18:43 Music
drwxr-xr-x 2 matteorr matteorr 4096 Jan 19 22:12 Pictures
drwxr-xr-x 2 matteorr matteorr 4096 Oct 18 18:43 Public
drwxr-xr-x 2 matteorr matteorr 4096 Oct 18 18:43 Templates
drwxr-xr-x 2 matteorr matteorr 4096 Oct 18 18:43 Videos
使用以下命令,我能够将 ls -l
的结果在每个空格处分割,并访问包含名称的最后一个元素:
ls -l | awk '{split($0,array," ")} END{print array[9]}'
然而,它仅返回最后一行(即
Videos
),因此我需要迭代所有由ls -l
命令返回的行。
- 我该如何做到这一点?
- 有没有更好的方法来解决整个问题?
添加部分
对于目录中包含的所有文件,如果它是一个文件,则不执行任何操作,如果它是一个目录,则应将该目录的名称附加到其中包含的所有文件的末尾。
所以,假设目录Videos有以下文件:
-rwxr-xr-x 2 matteorr matteorr 4096 Oct 18 18:43 video1.mpeg
-rwxr-xr-x 2 matteorr matteorr 4096 Oct 18 18:43 Video2.wmv
我需要将它们重命名如下:
-rwxr-xr-x 2 matteorr matteorr 4096 Oct 18 18:43 video1_Videos.mpeg
-rwxr-xr-x 2 matteorr matteorr 4096 Oct 18 18:43 Video2_Videos.wmv
find
而不是ls
:http://mywiki.wooledge.org/ParsingLs - Jakub Kotowski