Сценарии оболочки Unix - копирование файлов из родительских папок и подпапок в новую папку - PullRequest
0 голосов
/ 06 января 2019

У меня есть родительская папка с файлами и много подпапок с файлами. Мне нужно скопировать файлы в одиночку из родительских и подпапок в OutputFolder. Ниже приведена структура папок.

ParentFolder: Parent_1.txt, Parent_2.txt
SubFolder1: Folder1_1.txt, Folder1_2.txt
SubFolder2: Folder2_1.txt, Folder2_2.txt

OutputFolder: Parent_1.txt, Parent_2.txt, Folder1_1.txt, Folder1_2.txt, Folder2_1.txt, Folder2_2.txt

Я попробовал приведенный ниже код, но он копирует все файлы из подпапок в родительскую папку и затем перемещается в OutputFolder. Кроме того, когда я вызываю "sh Filename.sh", я получаю пропущенный аргумент для `-exec ' cp: not stat '20190105' $ '\ r' '/ *': нет такого файла или каталога.

Today=$(date +%Y%m%d -d "today")
mkdir $Today
Yesterday=$(date +%Y%m%d -d "yesterday")
find $Yesterday -iname "*.txt" -exec cp {} $Yesterday \;
cp $Yesterday/* $Today/

Обратитесь за помощью!

Ответы [ 2 ]

0 голосов
/ 07 января 2019

Используйте это:

find . -maxdepth 1 -iname "*.txt" -exec cp "{}" $Yesterday \;

для ограничения глубины текущего каталога. Обращайте внимание на кавычки вокруг фигурных скобок.

0 голосов
/ 07 января 2019

Мне нужно скопировать только файлы из родительских и вложенных папок в папку OutputFolder.

Я попробовал приведенный ниже код, но он копирует все файлы из подпапок в родительскую папку

Чтобы скопировать файлы непосредственно в OutputFolder $Today, просто укажите $Today вместо $Yesterday после -exec cp {}.

У меня отсутствует аргумент для `-exec 'cp: not stat' 20190105 '$' \ r '' / * ': такого файла или каталога нет.

\r является признаком окончания строки Windows в вашем скрипте - удалите CR или сохраните его в формате Unix.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...