Tarファイルがあります。testwebsite.tar
コンテンツを抽出するWebサーバーのディレクトリ、つまりmytestdirectoryに配置しました。
PuTTYを介してこのコマンドを実行します。tar -xvf testwebsite.tar
その結果、コンテンツが抽出されますが、フォーマットは次のようになります。
mytestdirectory/srv/test/www.testwebsite.com/
mytestdirectory
存在するすべてのファイルがサブディレクトリに含まれることを望みますwww.testwebsite.com
。
コマンドを使用してこのサブディレクトリのすべてのエントリを親ディレクトリに移動する方法はありますかmv
?
私はいくつかの回答を試してみましたが、その1つはサブディレクトリからこのコマンドを実行することでした。
mv * .[^.]* ..
ただし、これにより次のメッセージが表示されます。
mv: cannot stat `*': No such file or directory
mv: cannot stat `.[^.]*': No such file or directory
誰でもこの問題を解決するのに役立ちますか?私は基本的にすべてのエントリ(隠しファイルを含む)をwww.testwebsite.comサブディレクトリからmytestdirectory親ディレクトリに移動しようとしています。
ベストアンサー1
tarオプションを使用する必要があります--strip-components
。これは、tarアーカイブに不要なパスが含まれているためです。
たとえば、tarには次のものが含まれており、srv/test/www.testwebsite.com/index.html
これを取得するにはmytestdirectory/index.html
次のものが必要です。
$ cd /path/to/mytestdirectory
$ tar xf testwebsite.tar --strip-components=3
verboseコマンドを使用していても、元のファイル名を完全に設定するため、パラメータを追加して変更されたパスを一覧--show-transformed
表示することもできます。
$ tar tfz workspace.tar.gz --strip-components=2 workspace/project
-rw-rw-r-- guido/guido 11134 2009-01-22 23:21 workspace/project/aaa
-rw-rw-r-- guido/guido 11134 2009-01-22 23:21 workspace/project/bbb
[... list continues ...]
$ tar tfz workspace.tar.gz --strip-components=2 --show-transformed workspace/project
-rw-rw-r-- guido/guido 11134 2009-01-22 23:21 aaa
-rw-rw-r-- guido/guido 11134 2009-01-22 23:21 bbb
[ ... and so on ...]
状況を解決するには、mv
次のようにします。
# cd /path/to/mytestdirectory
# mv srv/test/www.testwebsite.com/* .
隠しファイルを処理するための1つの解決策は次のとおりです。
# shopt -s dotglob
上記のコマンドの前に実行し、globのドットファイルを一致させるか、より良い方法で現在のターゲットディレクトリを削除してから、コピーするディレクトリを移動して名前を変更します。
[ delete or rename current /path/to/mytestdirectory ]
# cd /path/to
# mv srv/test/www.testwebsite.com/ mytestdirectory/
# rmdir srv/test/ srv/