各xlsxに対して抽出されたすべてのファイルの新しいディレクトリ名でディレクトリ/ファイル名を保持しながら、すべてのサブディレクトリから繰り返し抽出したいExcelファイルがたくさんあります。
私が見つけたファイルを抽出してください。これ。残念ながら、私のbashの知識には、1つのコマンドですべてのことを実行できる技術が欠けています。
だから最初にそれをより小さな部分に分割しようとします。
for z in ./*
do name="${z%%_*}"; dest=".${name//[ .-]/}"; mkdir "$dest";
done
私がしよう*
とすると
for z in ./*
現在のディレクトリ内のすべてのファイルを検索し、予想とは異なる結果を取得します。
find . -name "*.xlsx"
だから私はそれを元に戻すことができるかどうかを試してみます。
for f in | find . -name "*.xlsx"; do d="${f}"; mkdir -p "$d"
しかし、私のパイプラインが間違っているので、明らかに動作しません。
答え1
bash
あなたの別れが正しいのかわからない。
ずっと前にbashの使用をやめたからです。
しかし、ループからfindの出力が必要な場合は、次のことを試してください。
find . -name '*.xlsx' -print0 |
while IFS= read -r -d $'\0' z; do
name="${z%%_*}"
dest=".${name//[ .-]/}"
mkdir "$dest"
done