【发布时间】:2017-06-04 21:08:05
【问题描述】:
我有一个包含两列的文件列表。我需要删除第一列并保留文件名列表。如果我碰巧有一个以空格结尾的文件,例如“某个文件”,则空格会被 awk 删除。
以文件“输入”为例(注意“某些文件”末尾的空格)
abc some file
def some other file
跑步
cat input | awk '{$1=""; print substr($0, 2)}' > output
将产生文件输出
some file
some other file
“some file”现在是“some file”,导致处理文件列表时文件不存在。
任何便携式解决方案都值得赞赏:)
[编辑] 试图简化上面的示例以使其更清晰,但实际上列更多,因此某些解决方案可能不适用。
实际文件是 rsync --list-only 输出:
drwxr-xr-x 4096 2017/06/04 11:24:21 .
drwxr-xr-x 234234 2017/06/04 11:24:19 some file
drwxr-xr-x 1341212 2017/06/04 11:24:19 some other file
显示文件大小的列可能会扩大,因此删除固定数量的尾随字符会导致错误。
文件名确实可以包含路径和多个空格。
示例测试文件(请记住,文件大小可能会有所不同,因此第二列的大小可能会增加):
drwxr-xr-x 4096 2017/06/04 11:24:21 .
drwxr-xr-x 4096 2017/06/04 11:24:19 another
drwxr-xr-x 4096 2017/06/04 11:24:19 another/one
drwxr-xr-x 4096 2017/06/04 11:24:19 another/one/bites
drwxr-xr-x 4096 2017/06/04 11:24:19 another/one/bites/ de_dust
-rw-r--r-- 0 2017/06/04 11:24:19 another/one/bites/ de_dust/ 2017/06/04 11:24:19 Iron Rhapsody
drwxr-xr-x 4096 2017/06/04 11:24:19 phantom of
drwxr-xr-x 4096 2017/06/04 11:24:19 phantom of /the opera
-rw-r--r-- 0 2017/06/04 11:24:19 phantom of /the opera/Bohemian Maiden
[/编辑]
【问题讨论】: