2013-03-25 2 views
0

Я писал сценарий оболочки, где он будет искать файлы (ZIP) в каталоге с помощью команды ls и разархивировать их в пункт назначения, проблема в том, что имя файла имеет пробелы между ними, поэтому, когда скрипт сканирует его с учетом только имени после пробелаДобавление двойных кавычек в последнее поле вывода команды ls

Пример: если имя файла «ab c.zip», то только c.zip считается именем файла, а затем он говорит, что файл не найден.

Поэтому, пожалуйста, дайте мне знать, как справиться с этой

я думал, если я могу заключить имя файла в двойных кавычках, он должен work.so я смотрел, как я могу добавить двойные кавычки в последнее поле команды LS , Мне нужно все поле команды ls, так как я проверяю размер файла и временную метку, а также перед распаковкой, поэтому мне нужно заключить только имя файла с двойными кавычками, которое является последним полем команды ls.

С уважением, Сатья

+1

Как насчет 'ls -1 | awk '{printf ("% s% s% s \ n", "\" ", $ 0," \ "")}' '? – fedorqui

+0

Вы не можете достоверно разобрать вывод ls. Вам нужно использовать подход @clarkw, предлагающий или «найти». -maxdepth1 ... 'с' -exec' или '...- print0 | xargs -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 вариант, так что вы можете сказать ему, чтобы дать вам только информацию вы заинтересованы в о файлах.