ls
(или хорошо, stat(2)
системный вызов )сообщает вам размер содержимого файла. Сколько места требуется файловой системе для ведения бухгалтерского учета, это не является частью этого, и как деталь реализации это не то, что программы в целом должны заботиться или даже знать об этом. Отображение деталей реализации сделало бы абстракцию файловой системы менее полезной.
path1="mydir/**"
path2="mydir/testing"
Здесь path1="mydir/**"
используется шаблон раскрытия параметра глобуса, ведь это совершенно другой язык, чем RegEx, использованный в сравнении.
[ [ "$path2" =~ "$path1" ] ] && echo "Matches"
Но в условиях используется регулярное выражение:
[[ "$path2" =~ "$path1" ]]
Не добавляйте пробелы между [ [
и ] ]
, а между [[
и ]]
Объединение расширения параметров и регулярное выражение — это два разных языка шаблонов.
Если $path1
содержит шаблон белого списка, вы должны записать его в RegEx следующим образом:
path1='mydir/.*'
path2="mydir/testing"
[[ ${path2} =~ ${path1} ]] && echo "Matches"
Справа находится переменная RegEx path1
, и ее нельзя заключать в кавычки, иначе кавычки интерпретируются как буквальный "
символ.