Ошибка при получении использования диска для папки в unix

У меня есть XYZ=/opt/Ind и некоторые каталоги под /opt/Ind

Я отсортировал каталоги по: ls -t $XYZ Затем мне нужно получить только размер первой папки. Я попытался

du -sk $(ls -t $XYZ/TAL/ | head -n 1)

Это дает мне эту ошибку

du: cannot access `\033[0m\033[01;34m20160525_033732\033[0m': No such file or directory

Будем рады помощи.


person Aishwarya    schedule 25.05.2016    source источник


Ответы (2)


Проблема здесь в том, что вы используете не обычный ls, а псевдоним, так что он дает вам цветной вывод. Таким образом, вместо обычного имени 20160525_033732 вы получите его синего цвета.

$ echo -e "\033[0m\033[01;34m20160525_033732\033[0m"
20160525_033732

Просто используйте \ls, чтобы использовать исходный ls без псевдонима.

du -sk "$(\ls -t $XYZ/TAL/ | head -n 1)"
#         ^

Посмотрите, с чем связан псевдоним:

type ls

Вероятно, он вернет что-то вроде:

ls is aliased to `ls --color=always'
person fedorqui 'SO stop harming'    schedule 25.05.2016
comment
Могу ли я распечатать только размер, а не имя папки с помощью этой команды - person Mohit Arora; 27.05.2016
comment
@MohitArora конечно. Вы можете сказать du file | awk '{print $1}'. - person fedorqui 'SO stop harming'; 27.05.2016

добавьте --color=never к ls, чтобы он не раскрашивал вывод:

du -sk $(ls --color=never -t $XYZ/TAL/ | head -n 1)
person Stefan Hegny    schedule 25.05.2016