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

Много лет назад я преобразовал часть своих файлов к произвольному формату с определенным расширением. я больше не требую иметь их в этом формате, и я хотел бы, начинают процесс замены их, потому что преобразование не является соответствующим решением. к сожалению, они смешаны в отдельных папках той же корневой папки с файлами в моем текущем формате другого расширения. Я чувствую, что это сделало бы этот процесс легче, если бы я должен был переместить каждую папку, которая содержала файл с нежелательным форматом к отдельной корневой папке. Файлы хранятся на сервере Linux и совместно используются через самбу. Как я могу сделать это с несколькими командами или сценарием? Я открыт для других предложений также. Я хочу избежать времени, проведенного, редактируя текстовые файлы. В конечном счете я хотел бы команду, которая произвела список полных путей для папок, отсортированный по количеству уровней будет приятная черта. Список всех файлов ясно не, что я ищу.

3
задан 06.03.2013, 10:13

2 ответа

найти. - тип f | sed "s#^.# $ (pwd) #"

полные пути возвратов для всех файлов + продвижение / когда выполнено в корне Вы могли передать это по каналу к grep и соответствовать расширению, сопровождаемому и endline

отбрасывание это в текстовом файле для манипуляций

можно теперь считать/'s в строке и разделить имя файла от конца и mv $line к/adir/filename

это могло все быть в единственном сценарии удара... я не завершен достаточно хороший в сценариях удара для создания его остротой, но это получает Вас большая часть пути там. можно хотеть не упустить избиение файла, если Вы делаете это все же.

как я обработал бы его

отсюда ВНИЗ ЯВЛЯЕТСЯ НОВЫМ

так как очевидно это - мое задание, чтобы записать Вам полностью функциональный сценарий, так как Вы не можете считать часто задаваемые вопросы онлайн или ответить при выяснении, каким образом это перестало работать:

find . -type f | sed "s#^.#$(pwd)#" | grep '.xml'> test.txt  
./atest.sh > test2.txt  

----atest.sh begin----  
#!/bin/bash  
while read line  
do  
dirname $line  
done 

Для чего еще Вы нуждаетесь в сценариях?? потому что у меня действительно нет ничего лучше, чтобы сделать

вывод из того сценария является только именами каталогов, которые содержали файлы, заканчивающиеся в .xml или каталогах, заканчивающихся в .xml

2
ответ дан 08.12.2019, 00:34

ИСТОЧНИК должен быть верхним большая часть каталога, который Вы ищете. Если файлы хранятся все всюду по Вашей файловой системе затем, ИСТОЧНИК должен быть самой файловой системой.

find ~/SOURCE -name '*.YOUR_EXTENSION' -exec mv {} ~/DESTINATION \;

Переименуйте их как это:

$ rename -v 's/\.YOUR_EXTENSION$/\.NEW_EXTENSION/' *.YOUR_EXTENSION

Это была бы хорошая идея выполнить это с -n опция вместо -v опция, ПРЕЖДЕ ЧЕМ Вы на самом деле захотите сделать переименовывание, потому что -n опция просто выполнит моделирование и даст Вам результаты того моделирования.

2
ответ дан 08.12.2019, 00:34

Теги

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