Как скопировать файлы с разными именами с одинаковым расширением, чтобы все они имели стандартное имя файла?

Вы получаете четыре строки вывода, потому что вы просите findвыполнить поиск в текущем каталоге (.), а также во всем, до чего расширяется *.

Для текущего каталога findпродолжит вызывать llдля вещей, которые он находит, которые будут текущим каталогом, каталогом testи файлом в каталоге test. В этом списке file123дважды.

Затем он будет искать все, что расширяется *, что будет каталогом test. Теперь он снова будет использовать llдля testи для файла внутри. Это снова перечисляет ваш файл дважды.

Вместо этого, если вы ищете обычный файл, используйте -type f. И вам не нужно использоватьll(или ls), чтобы получить результаты из find, так как по умолчанию будут перечислены найденные пути. Кроме того, просто укажите findтекущий каталог (илиtest)в качестве пути поиска :

.
find. -type f

Если вы знаете, что ищете файл с точным именемfile123:

find. -type f -name 'file123'

Если вы хотитеls -l-как вывод, а не путь:

find. -type f -name 'file123' -ls
0
25.12.2020, 12:12
1 ответ

Ваша команда,

find. -name "*.txt" -exec cp {} fruit.txt \;

будет правильно находить все файлы (и каталоги и т. д. ), которые имеют суффикс имени файла .txtв текущем каталоге или ниже, и будет копировать их все, один за другим, в имя fruit.txtв текущем каталоге .

Что вам нужно сделать, так это скопировать их в тот же каталог, что и исходный файл, и, возможно, рассматривать только обычные файлы, а также избегать уже существующих fruit.txtимен:

find. -type f -name '*.txt' ! -name fruit.txt -execdir cp -- {} fruit.txt \;

Когда вы используете не -стандартный (, но общедоступный предикат )-execdir, используемая вами команда будет выполняться внутри каталога найденного файла. Это означает, что указанный выше cpскопирует файл в fruit.txtв тот же каталог, что и найденный файл.

В зависимости от желаемого эффекта вы можете использовать символическую ссылку вместо копии файла:

find. -type f -name '*.txt' ! -name fruit.txt -execdir ln -sf -- {} fruit.txt \;
5
18.03.2021, 22:40

Теги

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