سؤال

وهناك دليل NTFS مفتوح في قذيفة باش. وما أمر باقتطاع متكرر عن أسماء الملفات في الدليل إلى حد 255 حرفا اللازمة لext3 و؟

هل كانت مفيدة؟

المحلول

إذا كان لديك الوصول إلى قذيفة ويندوز، يمكنك استخدام:

@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

و(ملاحظة:. واضاف لقد صدى قبل الأمر إعادة تسمية فقط حتى تتمكن من التحقق بصريا أنه يعمل قبل فعلا تشغيله يعمل على بلدي مربع)

وأنا متأكد من شخص ما على مربع لا شىء * الآن يمكن أن تجعل السيناريو مماثل لباش، ولكن أنا عالقة في ويندوز العالم:)

وحظا سعيدا!

نصائح أخرى

وعلى افتراض أن قذيفة يجلس في الدليل NTFS كما انها PWD:

<اقتباس فقرة>   

وfor f in *; do mv $f ${f:0:255}; done

وعلى غرار إصدار المستندة إلى الحوار الاقتصادي الاستراتيجي ديف، لكنها تتجنب إكسيك لكل ملف. ستفجر على دير ضخم حقا، بسبب الحد الأقصى سطر الأوامر، ولا يعمل دليل فرعي.

$ 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 {} \;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top