0

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

示例:如果文件名是 "ab c.zip" ,只有 c.zip 被认为是文件名,然后它说文件未找到。

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

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

问候, 沙迪亚

4

1 回答 1

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选项,因此您可以告诉它只为您提供您对文件感兴趣的信息。

于 2013-03-25T08:32:26.813 回答