plugin-cfg.xml
백업하고 동일한 디렉토리에 보관하려는 다른 파일이 포함된 일부 디렉토리가 있습니다 .
예를 들어
Plug6_a1/plugin-cfg.xml
Plug6_a2/plugin-cfg.xml
Plug6_a3/plugin-cfg.xml
각 디렉토리에 plugin-cfg.xml
이름 바꾸기를 복사하는 방법은 무엇입니까?plugin-cfgbk.xml
답변1
find Plu*_a* -type f -name plugin-cfg.xml -exec \
sh -c 'cp "$1" "$(dirname "$1")"/plugin-cfgbk2.xml ' sh {} \;
이름이 로 시작하고 포함된 디렉토리에 있는 각 파일에 대해 plugin-cfg.xml
동일한 디렉토리에 의 복사본을 만듭니다.Plu
_a
plugin-cfg.xml
plugin-cfgbk2.xml
답변2
dest=/path/to/backup/destination;
find plu6_a1 plu61_a2 -type f -iname '*.xml' -print0 | while IFS= read -rd '' f; do
cp -- "$f" "${dest%/}/${f%.xml}-bk.xml"
done
plu6_a1 plu61_a2에서 각 XML 파일을 찾아 복사본을 만들고 복사본에 접미사 -bk.xml을 추가한 다음 "$dest"로 이동합니다.
편집: 이 코드는 Bash로 작성되었으며 GNU 또는 BSD find(1)도 필요합니다.
답변3
필요한 한 줄은 다음과 같습니다 /bin/sh
(그러나 이는 단일 디렉터리에서만 작동합니다).
for f in ./*.xml; do cp "$f" "${f%cfg.xml}cfgbk.xml"; done
bash 4+가 있다고 가정하면(모른다면 아마도 알고 있을 것입니다. 확인 bash --version
) 재귀에 globstar를 사용할 수 있습니다.
shopt -s globstar
for f in ./**/*.xml; do cp "$f" "${f%cfg.xml}cfgbk.xml"; done
그러나 백업에 대해 보다 명확한 이름 지정 체계를 채택하는 것을 고려할 수도 있습니다. 저는 파일 이름에 ".backup"과 같은 것을 추가하는 것을 선호합니다.
shopt -s globstar
for f in ./**/*.xml; do cp "$f" "$f".backup; done