Использование нескольких подстановочных знаков в пути к запуску команды на всех файлах в каталоге

В sed -h имеют:

  -i[SUFFIX], --in-place[=SUFFIX]
             edit files in place (makes backup if SUFFIX supplied)

и «выполнить операцию над самим файлом». абсолютное это.

И человек сказал: «Sed - это редактор потока. Редактор потока используется для выполнения основных преобразований текста во входном потоке (файл или входные данные из конвейера). '

в качестве вашего вопроса

sed -i '1d' file_name

означает: удалить первая строка в файле «имя_файла» на месте и резервное копирование в файл. (точно так же, как редактировать файл и удалять первую строку напрямую.)

1
12.10.2018, 06:46
2 ответа

Думаю, здесь лучше использовать find:

for FILE in $DIR
do
    find $DIR -iname '*.txt' -exec cp -fv {} ${DIR}/backup/${FILE} \;
done

Вы можете добавить опцию --parentsк cp, если хотите сохранить структуру каталогов.

0
28.01.2020, 00:26

Если вы просто хотите скопировать /home/users/dataв/home/users/data/backup:

rsync -ai --exclude=/backup/ /home/users/data/ /home/users/data/backup

Это также исключает копирование самого каталога backupпри повторном запуске команды. Обратите внимание, что исходный каталог (и каталог в шаблоне исключения )должны иметь косую черту в конце.

0
28.01.2020, 00:26

Теги

Похожие вопросы