在ls命令输出的最后一个字段中添加双引号

时间:2013-03-25 08:17:47

标签: bash unix scripting sed awk

我正在编写一个shell脚本,它将使用ls命令在目录中查找文件(ZIP)并将其解压缩到目标,问题是文件名之间有空格,所以当脚本扫描它时考虑只在空格后命名

示例:如果文件名是“a b c.zip”,则只有c.zip被认为是文件名,然后它说文件未找到。

所以请让我知道如何处理这个

我想如果我可以将文件名用双引号括起来它应该工作。所以我在寻找如何将双引号添加到ls命令的最后一个字段。 我需要ls命令的所有字段,因为我在解压缩之前检查文件大小和时间戳,所以我只需要用双引号括起文件名,这是ls命令的最后一个字段。

此致 沙迪亚

1 个答案:

答案 0 :(得分:1)

我建议您使用Bash的通配符模式(可以处理空格)来获取文件列表,然后使用stat命令获取有关特定信息的信息文件。例如:

$ ls -l
total 1
-rw-r--r-- 1 root root 0 2013-03-25 16:27 a b c.txt
-rw-r--r-- 1 root root 0 2013-03-25 16:27 d e f.txt
$ for file in *.txt; do stat "$file"; done
  File: `a b c.txt'
  Size: 0               Blocks: 1          IO Block: 131072 regular empty file
Device: 3dd0002h/64815106d      Inode: 455629      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2013-03-25 16:27:35.388291856 +0800
Modify: 2013-03-25 16:27:35.388291856 +0800
Change: 2013-03-25 16:27:35.388310939 +0800
  File: `d e f.txt'
  Size: 0               Blocks: 1          IO Block: 131072 regular empty file
Device: 3dd0002h/64815106d      Inode: 455630      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2013-03-25 16:27:35.388401772 +0800
Modify: 2013-03-25 16:27:35.388401772 +0800
Change: 2013-03-25 16:27:35.388412772 +0800
$

请注意,stat有一个--format选项,因此您可以告诉它只为您提供您感兴趣的有关文件的信息。