NTFS ディレクトリが bash シェルで開かれています。ディレクトリ内のすべてのファイル名を ext3 に必要な 255 文字の制限に再帰的に切り詰めるコマンドは?
質問する
3801 次
3 に答える
1
シェルが PWD であるため、NTFS ディレクトリにあると仮定します。
for f in *; do mv $f ${f:0:255}; done
Dave の sed ベースのバージョンに似ていますが、ファイルごとの exec を回避します。コマンドラインの最大制限のために、非常に巨大なディレクトリで爆発し、サブディレクトリを実行しません。
于 2009-05-07T18:00:01.963 に答える
1
Windows シェルにアクセスできる場合は、次を使用できます。
@echo off
setlocal EnableDelayedExpansion
REM loop over all files in the cwd
for /f %%a in ('dir /a-d /b') do (
REM store this filename in a variable so we can do substringing
set ThisFileName=%%a
REM now take a substring
set ThisShortFileName=!ThisFileName:~0,255!
REM finally, the rename:
echo ren %%a !ThisShortFileName!
)
:EOF
endlocal
(注: rename コマンドの前に echo を追加したのは、実際に実行する前に機能することを視覚的に確認できるようにするためです。私のボックスで機能します。)
*nix ボックスを使用している人なら、bash 用の同様のスクリプトを作成できると思いますが、私は Windows の世界で立ち往生しています :)
幸運を!
于 2009-05-01T14:47:48.810 に答える
0
$ cat truncname
#!/bin/bash
# requires basename, dirname, and sed
mv $1 `dirname $1`/`basename $1 | sed 's/^\(.\{0,255\}\).*/\1/'`
$ chmod a+x truncname
$ find . -exec ./truncname {} \;
于 2009-05-01T14:47:46.750 に答える