Решить сценарий оболочки, в котором мне нужно удалить файлы размером 0? - PullRequest
0 голосов
/ 25 мая 2020

Я должен удалить с разрешения файлы размером 0, созданные пользователем по определенному пути. Пользователь и путь являются позиционными параметрами. Я подумал о создании «for», где я go через файлы от определенного пользователя, а затем с помощью «find», чтобы удалить пустые из желаемого пути. Примерно так:

#!/bin/bash
for file in /$1/*

do

find /$2 -size -0b -type 'f' -exec rm -i {} \;

done

Но не работает, подскажите почему?

1 Ответ

0 голосов
/ 25 мая 2020

(рекомендуется отредактировать публикацию, где сценарий завершен и представлен в виде кода; например, ведущий # отсутствует; примечание: инвертируйте сценарий и нажмите кнопку {})

Как показано, сценарий выглядит несколько странный; рекомендую проверить такие вещи, как правильность счетчика аргументов в cmd-строке, а затем правильность аргументов $1 и $2; выражение /$1/* указывает, что вы хотите повторить тот же поиск на основе подстановочного знака * результата всего в пределах абсолютного пути /$1, но завершающий /* не нужен (find обычно спускается в подкаталоги) , в то время как каталог, переданный в find, является инвариантным путем abs /$2. Вот версия с угаданными элементами:

#!/bin/bash

[ $# -ne 2 ] && { echo Usage: ${0##*/} dir user 1>&2; exit 1; }

# search the unmodified dir $1 for any file owned by $2 with size 0 and run an interactive delete
find $1 -user $2 -type f -size 0 -exec rm -i {} \;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...