Kopieren Sie nur * .h-Dateien mit Unterordnerstruktur bash

912
ShurupuS

Ich muss ein Skript schreiben, um nur * .h-Dateien mit dem Speichern der Ordnerstruktur zu kopieren:

jetzt sieht es so aus:

cd "$" echo 'Copying Cocos Headers into Framework..' cd .. for H in `find ./Frameworks/Cocos -name "*.h"`; do echo "$"  ditto -V "$" "$/include/header/cocos/"  done 

Die Dateien befinden sich jedoch in einem Ordner. Wie kann ich das lösen?

1

2 Antworten auf die Frage

1
Hastur

In Linux findkann sehr mächtig sein.

Sie können verwenden

OutDir="$/include/header/cocos/" # Linux is case sensitive, Check if mkdir -p "$" # it is needed Cocos or cocos... cd ./Frameworks/Cocos # just to have clean path to create  # Here with only one line  find . -name "*.h" -exec bash -c 'cp -p --parents {} "$" ' \; # cd - # Eventually to come back to the previous path  

Hinweise:
cp -pEigentumsvorbehalt beibehalten ...
cp --parentsZielverzeichnis erstellen, das Basisverzeichnis muss jedoch vorhanden sein.
mkdir -pErstellen Sie das Verzeichnis mit dem Pfad der Eltern ohne Fehler, falls es nur
man findfür alle Suchoptionen existiert .


Wenn Sie in der Nähe des Skriptes bleiben möchten

cd "$" echo 'Copying Cocos Headers into Framework..' StartSearchDir="$../Frameworks/Cocos" BaseDestDir="$/include/header/cocos/" cd $StartSearchDir for H in `find . -name "*.h"`; do echo "$"  PathFileDir=$(dirname $H) mkdir -p "$/$" # no error, make parents too cp -p "$H" "$/$/" # preserve ownership... # ditto -V "$" "$/include/header/cocos/" # commented line done 

Beachten dirnameSie, dass Sie aus einem vollständigen Pfad + Dateinamen nur den Pfad extrahieren können.
Überprüfen Sie die Hilfe mit man dirnameundman basename

1
ShurupuS

Das Problem wurde folgendermaßen gelöst:

cd "$" echo 'Copying Cocos Headers into Framework..'  StartSearchDir="$/../Frameworks/Cocos" BaseDestDir="$/include/$/header/cocos/"  echo 'STARTDIR:'$StartSearchDir echo 'DESTDIR:'$BaseDestDir  cd $StartSearchDir  tar -cf - . | (cd $BaseDestDir ; tar -xpf - --include='*.h') 

Aber die Lösung von Hastur ist auch schön - machen Sie die Lösung zur besten

Kreative Problematik :) Hastur vor 9 Jahren 0