В этом конкретном случае вы можете сделать:
set -- file[1-4]
[[ $# -eq 4 ]] && rm -f -- "$@"
Этот устанавливает
список аргументов для имен файлов, которые соответствуют любому из file1
, file2
, file3
или file4
1 , затем rm
с этими файлами, только если количество аргументов равно 4, то есть, если все файлы существуют.
1: для простоты я использую файл
вместо / tmp / bbsnode
Вы говорите, что копируете ту же папку на клиенте. Это двойная загрузка, поэтому, скорее всего, вы используете NTFS. Системы Linux записывают в системы NTFS через подсистему FUSE, которая использует код пользовательского режима -для реализации кода доступа к файловой системе. Каждый записанный или прочитанный блок должен пройти через этот интерфейс FUSE, который намного медленнее, чем собственный код ядра -.
Вы также говорите, что копируете ту же папку с удаленного общего ресурса Windows. В системах Linux это реализовано через SAMBA, который также является кодом пользовательского режима -. Так что это еще одно узкое место.
Если бы вы использовали собственное решение Linux -(, которое я предоставляю, в этом случае вы не можете ), вы бы обнаружили, что оно столь же быстрое, как собственное решение Windows -.