cd lib && ls -R | grep '\.swp$' | xargs -d '\n' rm
Что касается Вашего оригинала, я сделал бы это:
find lib -name '*.swp' | xargs -d '\n' rm
потому что, если find
возвраты никакие результаты Вы не получите ошибку.
Вы могли бы также хотеть использовать \! -type d
так find
не возвращает каталогов, которые, оказывается, называют *.swp
, потому что rm
не удался бы удалить их. Вы могли сделать что-то похожее с моим альтернативным использованием ls -RF
потому что каталоги получили бы запаздывание /
так не соответствуют regex.
Первоначальная проблема (основанная на прочтении всех комментариев к вопросу ОП) заключалась в том, что исполняемый файл scp
на 64-битной системе представлял собой 32-битное приложение. 32-битное приложение, не скомпилированное с "поддержкой больших файлов", заканчивается указателями поиска, которые ограничиваются 2^32 =~ 4 Гб
.
Вы можете определить, является ли scp
32-битным, используя команду file
:
file `which scp`
На большинстве современных систем он будет 64-битным, поэтому усечения файлов не произойдет:
$ file `which scp`
/usr/bin/scp: ELF 64-bit LSB shared object, x86-64 ...
32-приложение все равно должно поддерживать "большие файлы", но оно должно быть скомпилировано из исходных текстов с поддержкой "больших файлов", чего в данном случае, очевидно, не произошло.
Рекомендуемым решением, возможно, будет использование полного стандартного 64-битного дистрибутива, в котором приложения по умолчанию компилируются как 64-битные.
Rsync очень хорошо подходит для передачи больших файлов по ssh, так как способен продолжить передачу, прерванную по какой-то причине. Так как она использует хэш-функции для обнаружения одинаковых файловых блоков, то функция продолжения достаточно надежна.
Удивительно, что ваши версии sftp
/scp
, кажется, не поддерживают большие файлы - даже при 32-битных двоичных файлах поддержка LFS должна быть довольно стандартной, в настоящее время.
Я не уверен насчет ограничений на размер файлов SCP и SFTP, но вы можете попробовать обойти проблему с split:
split -b 1G matlab.iso
Это создаст 1 гигабайт файлов, которые по умолчанию называются xaa, xab, xac, ....
. Затем вы можете использовать scp для передачи файлов:
scp xa* xxx@xxx:
Затем на удаленной системе воссоздать исходный файл с cat:
cat xa* > matlab.iso
Конечно, штрафом за этот обходной путь является время, затраченное на операции сплита и кошки, а также дополнительное дисковое пространство, необходимое на локальной и удаленной системах.