2017-04-12 5 views
1

Ich habe folgende Ordner-Struktur:Wie kopiert man alle * .html Dateien von einem Ordner in einen anderen mit bash Script?

.. 
documents 
    folder_destination // <- here I want to put *.html files 
    project 
     scripts 
      myScript.sh 
     folder_source 
      a.html 
      b.html 
      c.html 

Ich möchte ein Bash-Skript in myScript.sh Datei schreiben, die alle * .html-Dateien von folder_source kopiert folder_destination.

myScript.sh Codebeispiel:

#!/bin/bash 

cd ../folder_source 
for f in *.html 
do 
    cp -v "$f" ../../folder_destination/"${f%.html}".html 
done 

Aber es ist nicht

+2

'cp documents/Projekt/folder_source/* HTML-Dokumente/folder_destination /'? –

+0

Kann ich relative Pfade verwenden? @Dex 'ter – Dmitry

Antwort

4

Warum würden Sie sogar eine Schleife durch die Dateien funktioniert?

Sie können einfach:

cp -v documents/project/folder_source/*.html documents/folder_destination/ 

Wenn Sie relative Pfade verwenden möchten, können Sie dies von folder_source:

cp -v *.html ../../folder_destination/ 

Mehr, wenn Sie auf eine niedrigere Ebene als folder_source Sie können, auf die gleiche Regel wie oben, Folgendes tun:

cp -v ../*.html ../../folder_destination/ 

Noch mehr, wenn Sie bis zu Chaos etwas nicht wollen, nur zwei Variablen erstellen, sagen:

  • SOURCE_DIRECTORY und
  • DESTINATION_DIRECTORY,

und Weisen Sie ihnen die absoluten Pfade für folder_source und folder_destination zu. Auf diese Weise können Sie einfach:

#!/bin/bash 

SOURCE_DIRECTORY='/home/Foo/folder_source' 
DESTINATION_DIRECTORY='/home/Foo/other_folder/folder_destination' 

cp -v $SOURCE_DIRECTORY/*.html $DESTINATION_DIRECTORY 

Ohne mehr zu kümmern.


auf diese Antwort zu erweitern, habe ich auch verwendet, die *.htmlglob was im Grunde bedeutet: geben Sie mir alle Dateien, die die .html Beendigung enthalten.

Seien Sie vorsichtig und denken Sie daran, dass glob nicht den Standardsatz für reguläre Ausdrücke verwendet.

+0

Es zeigt mir einen Fehler: cd: ../folder_destination: Keine solche Datei oder Verzeichnis @Dex' ter – Dmitry

+0

Überprüfen Sie die Änderungen für eine vollständige Lösung :) Getestet auf einem CentOS 7.3-Rechner. –

+0

Ich habe diesen Weg versucht: cp -v ../folder_source/*.html ../../folder_destination aber bekomme einen Fehler: ../folder_source/*.html Keine solche Datei oder Verzeichnis – Dmitry

0

Geben Sie dieses ein Versuch -.

find /home/Foo/folder_source -name "*.html" -exec cp {} /home/Foo/other_folder/folder_destination \; 
+0

Ich kann keine absoluten Pfade verwenden @ VIPIN KUMAR – Dmitry

+0

Ich möchte Pfade im Zusammenhang mit dem Skriptordner verwenden – Dmitry

Verwandte Themen